关注数据网格旁边的控件
本文关键字:控件 网格 数据 数据网 | 更新日期: 2023-09-27 18:11:45
假设我在WPF窗口上有6个控件,如下所示:
TabIndex | Name of the Control
-----------+----------------------
0 | DataGrid
1 | Button
2 | ComboBox
3 | Button
4 | Button
5 | Button
当Datagrid有焦点时,如果我按F5或其他一些我希望的键,我希望焦点继续与tabIndex = 1按钮。
我可以用Name_Of_The_Button.Focus();
这样简单的术语来表示。
上面我已经给出了例子。在现实中,我不知道控件的tabIndex是DataGrid的_tabindex + 1。因此,我不能使用上面的代码行。
还有其他方法可以解决我的问题吗?
如果它们是窗口的逻辑子窗口,您可以通过以下方式实现:
- 钩子
PreviewKeyDown
方法的容器控件(说StackPanel)。 - 检查是否按了F5键
- 使用
LogicalTreeHelper
循环遍历窗口的子窗口。 -
KeyboardNavigation.GetTabIndex(child)
法检查儿童tabIndex
:
private void StackPanel_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.F5)
{
// Replace stackPanel with the name of your panel.
foreach (UIElement child in LogicalTreeHelper.GetChildren(stackPanel))
{
if (KeyboardNavigation.GetTabIndex(child) == 2)
{
child.Focus();
break;
}
}
}
}