【问题标题】:Keyboard focus to DataGrid键盘焦点到 DataGrid
【发布时间】:2013-12-12 07:04:32
【问题描述】:
我有一个 WPF DataGrid 并希望将焦点设置到第一个项目,以便用户可以在第一次打开对话框时使用键盘在项目列表中导航。用datagrid.Focus();我可以将焦点设置到 DataGrid,但这显然不是键盘焦点,因为当我按下箭头键时,我无法在 DataGrid 中导航。焦点跳转到文本框“描述”,但这不是我想要的(见图)。
如何以正确的方式将焦点和键盘焦点设置到 DataGrid?感谢您的帮助。
【问题讨论】:
标签:
c#
wpf
datagrid
keyboard
focus
【解决方案1】:
好的,我找到了解决方案。这对我有用
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);
}
现在,我获得了正确的焦点,可以使用键盘进行导航。
【解决方案3】:
一个明确的方法:
DataGridCell dgc = DataGridView.FindChildren<DataGridCell>(true).First();
Keyboard.Focus(dgc);
解释:方法 FindChildren 会得到一个 IEnumarable,在这种情况下上面的 T 是 DataGridCell。选项“true”用于强制在 Visual Tree 视图中搜索,“.First()”来自 LINQ,以获取 IEnumerable 的第一个结果。因此,您将拥有 datagrid 的第一个 DataGridCell,现在您可以设置焦点。
我浪费了很多时间来寻找这种方式,希望对您有所帮助。
英语不是我的母语,如有错误请见谅。