【问题标题】:UWP alternative for WPF's IsKeyboardFocusWithin propertyWPF 的 IsKeyboardFocusWithin 属性的 UWP 替代方案
【发布时间】:2019-01-31 09:14:37
【问题描述】:

WPF 的 IsKeyboardFocusWithin 属性是否有 UWP 替代方案?如果没有,您将如何确定焦点是否在其内部。

我不希望手动沿着可视化树检查每个元素是否被聚焦...

【问题讨论】:

    标签: c# xaml uwp focus


    【解决方案1】:

    FocusManager.GetFocusedElement 将标识焦点元素。然后,您可以使用VisualTreeHelper.GetParent 向上走可视化树,看看它是否是您感兴趣的控件的子级。走上去比逐个节点检查整个树的子节点要轻得多。

    类似:

        bool IsKeyboardFocusWithin(UIElement element)
        {
            UIElement focused = FocusManager.GetFocusedElement() as UIElement;
    
            while (focused != null)
            {
                if (focused == element)
                {
                    return true;
                }
                focused = VisualTreeHelper.GetParent(focused) as UIElement;
            }
            return false;
        }
    

    【讨论】:

    • 另外,如果你使用 FrameworkElement 而不是 UIElement,它有自己的 'Parent' 属性,所以甚至不需要 VisualTreeHelper。
    • 我不确定,但我认为 VisualTreeHelper 的性能更高。
    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多