为什么FocusManager.GetFocusedElement(this)总是返回null?

And*_*nea 4 wpf focus xbap

我有一个应用程序运行良好作为一个简单的WPF应用程序在主窗口级别上具有GotFocus上的事件处理程序,如下所示:

    private void MainWindowGotFocus(object sender, RoutedEventArgs e)
    {
        var element = FocusManager.GetFocusedElement(this) as FrameworkElement;
        if (element != null)
        {
               //...
Run Code Online (Sandbox Code Playgroud)

然而,当设置为XBAP应用程序时,这种行为很奇怪(几乎完全相同的代码 - 主要的可视元素是Page而不是Window,但事件仍然可用并被触发).

在这种情况下(XBAP/wpf浏览器应用程序)元素始终为null.

有任何想法吗?:(

And*_*nea 6

感谢我的同事(Bogdan R.),我们发现FocusManager.IsFocusScope对Window(WPF)和Page(XBAP)有不同的默认值,即后者是假的.

只需在Page元素上设置FocusManager.IsFocusScope即可解决问题.