C# 使用键盘箭头在DataGrid中导航
我正在研究WPF数据网格。默认情况下,DataGrid键盘快捷键在进入ComboBox(在DataGrid中)时卡住 我尝试过PreviewKeyDown,当我按下箭头按钮时,它不是在DatagridCells中导航,而是来自top/first UI元素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) {
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的键事件。