0

Enternull の最後の行にヒットしたときに、DataGrid から次のコントロールにフォーカスを移動するにはどうすればよいですか。

私はWPF MVVMを使用しています

4

1 に答える 1

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 を使用して、この参照も使用してください。ウィンドウにデータグリッドとその他のコントロールを配置します。最後の行に到達すると、フォーカスが次のコントロールに変わります。このため、最後の行をリッチにすると発生しますif (row.GetIndex() == dataGrid1.Items.Count - 1)

セル選択モードでデータグリッドを使用したい場合は、コメントを残してください。

于 2012-05-07T14:55:50.723 に答える