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

我不想手动走下可视化树检查每个元素是否聚焦...

最佳答案

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;
    }

关于c# - WPF 的 IsKeyboardFocusWithin 属性的 UWP 替代方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54451448/

10-13 09:22