我有一个WPF DataGrid,并希望将焦点设置为第一个项目,以便用户可以在第一次打开对话框时使用项目列表中的键盘进行导航。使用datagrid.Focus();我可以将焦点设置为DataGrid,但这显然不是键盘焦点,因为当我按下箭头键时,我无法在DataGrid中导航。焦点跳转到文本框“描述”,但这不是我想要的(见图片)。
如何以正确的方式将焦点和键盘焦点设置为DataGrid?谢谢你的帮助。
答案 0 :(得分:8)
好的,我找到了解决方案。这对我有用
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);
}
现在,我得到了正确的焦点,可以用键盘导航。
答案 1 :(得分:1)
尝试使用Keyboard.Focus -
手动提供键盘焦点Keyboard.Focus(dataGrid);
答案 2 :(得分:0)
明确的方法:
DataGridCell dgc = DataGridView.FindChildren<DataGridCell>(true).First();
Keyboard.Focus(dgc);
说明:FindChildren方法将获得IEnumarable,在这种情况下,T是DataGridCell。选项&#34; true&#34;用于在Visual Tree视图中强制搜索和&#34; .First()&#34;是从LINQ获得IEnumerable的第一个结果。因此,您将拥有datagrid的第一个DataGridCell,现在您可以设置焦点。
我没有多少时间找到这种方式,我希望它有所帮助。
英语不是我的第一语言,所以请原谅任何错误。