假设我在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' s_abIndex + 1的控件。所以,我不能使用上面的代码行。
还有其他方法可以解决我的问题吗?
答案 0 :(得分:1)
如果他们是窗口的逻辑孩子,你可以通过以下方式实现:
PreviewKeyDown
方法(比如StackPanel)。LogicalTreeHelper
循环播放Windows的子项。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;
}
}
}
}