当我在其最后一行输入时,我如何将焦点从DataGrid移到下一个控件。
我正在使用WPF MVVM
答案 0 :(得分:2)
private void dataGrid1_KeyUp(object sender, KeyEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
//here we find the Row is selected
//then we check is the row last row
while ((dep != null) && !(dep is DataGridRow) && !(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridRow)
{
DataGridRow row= dep as DataGridRow;
//untill here we find the selected row and here we check if it
//the last row our focus go to next control after datagrid
if (row.GetIndex() == dataGrid1.Items.Count - 1)
{
dataGrid1.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
dataGrid1.UnselectAll();
}
}
}
将此事件设置为数据网格的关键字。使用System.Windows.Controls.Primitives也可以使用此引用。把datagrid和其他一些控件放到你的窗口。 当你到达最后一排时,它将把焦点转移到下一个控制。因为这个 if(row.GetIndex()== dataGrid1.Items.Count - 1)
,当你富有最后一行时我会发生我使用带有 fullrowselect作为选择模式的数据网格。如果你想使用带有单元格选择模式的数据网格,请为我留下评论。