将焦点移出DataGrid按Enter键按下WPF MVVM中的最后一行?

时间:2012-04-24 19:48:35

标签: c# wpf mvvm wpfdatagrid

当我在其最后一行输入时,我如何将焦点从DataGrid移到下一个控件。

我正在使用WPF MVVM

1 个答案:

答案 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作为选择模式的数据网格。如果你想使用带有单元格选择模式的数据网格,请为我留下评论。