如何将键盘导航焦点传递给 WPF 中生成的 xaml?以及如何退货?
Posted
技术标签:
【中文标题】如何将键盘导航焦点传递给 WPF 中生成的 xaml?以及如何退货?【英文标题】:How to pass keyboard navigation focus to generated xaml in WPF? And how to return it back? 【发布时间】:2021-07-26 18:42:04 【问题描述】:我有内容控制,在这里我正在生成视图,现在我想在这里传递 kayboard 导航焦点。当我点击“返回”时,我想回到以前的键盘导航焦点。
【问题讨论】:
【参考方案1】:必须先用FocusManager
找到现在成为焦点的控件,然后用父元素的所有子元素的VisualTreeHelper
进行导航,当当前项tabindex减1且控件tabindex等于重点。
请注意以下示例以阐明解释。
private void Back_Click(object sender, RoutedEventArgs e)
Control focusedControl = (Control)FocusManager.GetFocusedElement(this);
DependencyObject child;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(focusedControl.Parent); i++)
child = VisualTreeHelper.GetChild(focusedControl.Parent, i);
if (child is Control)
if (((Control)child).TabIndex == focusedControl.TabIndex - 1)
((Control)child).Focus();
【讨论】:
以上是关于如何将键盘导航焦点传递给 WPF 中生成的 xaml?以及如何退货?的主要内容,如果未能解决你的问题,请参考以下文章