键盘焦点到DataGrid

我有一个WPF DataGrid,并希望将焦点设置为第一个项目,以便用户可以在第一次打开对话框时使用项目列表中的键盘进行导航。 使用datagrid.Focus(); 我可以将焦点设置为DataGrid,但这显然不是键盘焦点,因为当我按下箭头键时,我无法在DataGrid中导航。 焦点跳转到文本框“描述”,但这不是我想要的(见图片)。

在此处输入图像描述

如何以正确的方式将焦点和键盘焦点设置为DataGrid? 谢谢您帮忙。

好的,我找到了解决方案。 这对我有用

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); } 

现在,我得到了正确的焦点,可以用键盘导航。

尝试使用Keyboard.Focus手动提供键盘焦点 –

 Keyboard.Focus(dataGrid); 

一个明确的方法:

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

说明:FindChildren方法将获得IEnumarable,在这种情况下,T是DataGridCell。 选项“true”用于强制在Visual Tree视图中搜索,“.First()”来自LINQ以获取IEnumerable的第一个结果。 所以,你将拥有datagrid的第一个DataGridCell,现在你可以设置焦点。

我没有太多时间找到这种方式,我希望它有所帮助。

英语不是我的第一语言,所以请原谅任何错误。