13


6

WPFツールキットデータグリッドの特定のセルにフォーカスを設定する方法

WPFツールキットが提供するDataGridコントロールを使用して、OpenStock、Descriptionなどとともに製品リストを表示しています。 このDataGridでは、OpenStock列を編集可能に設定し、残りは編集不可能です。 このウィンドウが読み込まれたときに欲しいのは、キーボードフォーカスをOpenStock列の最初のセルに設定し、可能であれば編集モードにすることです。 これを2日間検索し、最終的にここに投稿しました。

任意のヘルプまたはコードサンプルが役立ちます。


どうもありがとう…​…​..

4 Answer


39


現在のセルを編集するセルに設定し、Loadedハンドラーでhttp://msdn.microsoft.com/en-us/library/cc189733(VS.100).aspx[BeginEdit]を呼び出す必要があります。

dataGrid1.CurrentCell = new DataGridCellInfo(
    dataGrid1.Items[0], dataGrid1.Columns[3]);
dataGrid1.BeginEdit();

DataGridTextColumnにXAMLで名前を付けると、 `Columns [3]`ではなくその名前を使用できます。


6


このコードを使用して、スクロールビューを特定のセルに移動します

dgv.ScrollIntoView(dgv.Items [row]、dgv.Columns [col]);


0


以下の機能を使用すると、動作します。

private void SetFocusOnGrid(DataGrid grid, int index)
{
    grid.ScrollIntoView(grid.Items.GetItemAt(index));
    grid.SelectionMode = DataGridSelectionMode.Single;
    grid.SelectionUnit = DataGridSelectionUnit.FullRow;
    grid.SelectedIndex = index;

    DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
    row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}


0


これは私のために働きました:

DataGridCellInfo dataGridCellInfo = new DataGridCellInfo(dataGrid1.Items[sampleRowIndex], dataGrid1.Columns[sampleColumnIndex]);
dataGrid1.SelectedCells.Clear();
dataGrid1.SelectedCells.Add(dataGridCellInfo);

これにより、フォーカスを置きたいセルが選択されます。

DataGridCellInfoオブジェクトは、セルおよびセルに関連付けられているデータ項目に関する情報を提供します。 DataGridコントロールがセルを取得するとき、たとえばCurrentCellまたはSelectedCellsプロパティで、実際のDataGridCellオブジェクトへの参照の代わりに使用されます。 https://blog.magnusmontin.net/2013/11/08/how-to-programmatically-select-and-focus-a-row-or-cell-in-a-datagrid-in-wpf/ [こちら]を確認してください詳細については。