Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用键盘箭头在DataGrid中导航_C#_Wpf_Datagrid_Keyboard Shortcuts - Fatal编程技术网

C# 使用键盘箭头在DataGrid中导航

C# 使用键盘箭头在DataGrid中导航,c#,wpf,datagrid,keyboard-shortcuts,C#,Wpf,Datagrid,Keyboard Shortcuts,我正在研究WPF数据网格。默认情况下,DataGrid键盘快捷键在进入ComboBox(在DataGrid中)时卡住 我尝试过PreviewKeyDown,当我按下箭头按钮时,它不是在DatagridCells中导航,而是来自top/first UI元素 private void dataGrid1_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Up) {

我正在研究WPF数据网格。默认情况下,DataGrid键盘快捷键在进入ComboBox(在DataGrid中)时卡住

我尝试过PreviewKeyDown,当我按下箭头按钮时,它不是在DatagridCells中导航,而是来自top/first UI元素

private void dataGrid1_KeyDown(object sender, KeyEventArgs e)
        {

            if (e.Key == Key.Up)
            {
                MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
                MessageBox.Show(sender.ToString());
            }
            else if (e.Key == Key.Down)
            {
                MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
            }
            else if(e.Key == Key.Right)
            {
                MoveFocus(new TraversalRequest(FocusNavigationDirection.Right));
            }
            else if(e.Key == Key.Left)
            {
                MoveFocus(new TraversalRequest(FocusNavigationDirection.Left));
            }
}

我想改变这一点,使右/左在整个行中导航,上/下在整个数据网格中垂直导航。

如果焦点在组合框上,键的行为将与组合框中的行为相同。我认为当按下左/右键时,您试图强制它移动到下一个单元格等。如果是这种情况,我的建议将是反对它,因为用户可以删除焦点,它将表现良好。但是,如果您想强制执行,在Datagrid上处理键事件将不起作用,焦点在Combo上,因此处理Combo的键事件。如果焦点在Combobox上,则键的行为将与它们在Combobox中的行为相同。我认为当按下左/右键时,您试图强制它移动到下一个单元格等。如果是这种情况,我的建议将是反对它,因为用户可以删除焦点,它将表现良好。但是,如果您想强制执行,在Datagrid上处理键事件将不起作用,重点是Combo,所以要处理Combo的键事件。