simmeone
simmeone

Reputation: 679

Keyboard focus to DataGrid

I have a WPF DataGrid and want to set the focus to the first item so that the user can navigate with the keyboard in the list of items, when the dialogue is opened the first time. With datagrid.Focus ( ); I can set the focus to the DataGrid, but this is apparently not the keyboard focus, because when I press the arrow down key, I cannot navigate in the DataGrid. The focus jump to the textbox "Description" but that is not what I want (see picture).

enter image description here

How can I set the focus and the keyboard focus in a correct way to the DataGrid? Thank for your help.

Upvotes: 9

Views: 8220

Answers (3)

StanleyIPC
StanleyIPC

Reputation: 1

A clear way to do this:

DataGridCell dgc = DataGridView.FindChildren<DataGridCell>(true).First();
Keyboard.Focus(dgc);

Explanation: The method FindChildren will get a IEnumarable, in this case above the T is DataGridCell. The option "true" is used to force the search in Visual Tree view and the ".First()" is from LINQ to get the first result of IEnumerable. So, you'll have the first DataGridCell of datagrid, now u can set the focus.

I lost much time to find this way, I hope it's helpful.

English isn’t my first language, so please excuse any mistakes.

Upvotes: 0

simmeone
simmeone

Reputation: 679

Ok, I found a solution. This works for me

Keyboard.Focus (GetDataGridCell (dataGridFiles.SelectedCells[0]));

private System.Windows.Controls.DataGridCell GetDataGridCell (System.Windows.Controls.DataGridCellInfo cellInfo)
{
  var cellContent = cellInfo.Column.GetCellContent (cellInfo.Item);

  if (cellContent != null)
    return ((System.Windows.Controls.DataGridCell) cellContent.Parent);

  return (null);
}

Now, I got the right focus and can navigate with keyboard.

Upvotes: 8

Rohit Vats
Rohit Vats

Reputation: 81233

Try giving keyboard focus manually using Keyboard.Focus -

Keyboard.Focus(dataGrid);

Upvotes: 1

Related Questions