【问题标题】:WPF: KeyboardNavigationMode.Contained doesn't work to suppress focus wrapWPF:KeyboardNavigationMode.Contained 无法抑制焦点环绕
【发布时间】:2009-09-12 22:53:22
【问题描述】:

我想用箭头键在我的窗口中导航。到目前为止它可以工作,但是如果我到达窗口的末尾,焦点会转到第一个主菜单项。但我希望焦点停在窗口中的最后一个控件上。

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
   if (e.Key == Key.Down)
   {
     elem.MoveFocus(FocusNavigationDirection.Next);
   }
}

“elem”是“stackPanel”的间接子控件。 MoveFocus 总是返回 true,我已经尝试过: KeyboardNavigation.SetTabNavigation(stackPanel, KeyboardNavigationMode.Contained); KeyboardNavigation.SetDirectionalNavigation(stackPanel,KeyboardNavigationMode.Contained); KeyboardNavigation.SetControlTabNavigation(stackPanel, KeyboardNavigationMode.Contained);

没有任何帮助。

【问题讨论】:

    标签: c# wpf navigation focus


    【解决方案1】:

    使用TraversalRequest 实例怎么样?

    if (e.Key == Key.Down)
    {
        e.Handled = true;
        elem.MoveFocus(new TraversalRequest 
        { 
            FocusNavigationDirection = FocusNavigationDirection.Next,
            Wrapped = false
        });
    }
    

    请注意,MSDN documentation for TraversalRequest.Wrapped 表示默认情况下为 false,因此无论如何焦点都不应该换行。

    【讨论】:

    • 我现在试过了,但是没有用。遍历我的所有控件后,它会继续使用我的主窗口中的主菜单项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2011-06-19
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多