我有一个应用程序运行良好,作为一个简单的WPF应用程序在主窗口级别的GotFocus上有一个事件处理程序,如下所示:
private void MainWindowGotFocus(object sender, RoutedEventArgs e)
{
var element = FocusManager.GetFocusedElement(this) as FrameworkElement;
if (element != null)
{
//...
然而,当设置为XBAP应用程序时,这种行为很奇怪(几乎完全相同的代码 - 主要的可视元素是Page而不是Window,但事件仍然可用并被触发)。
在这种情况下(XBAP / wpf浏览器应用程序)元素始终为null。
有什么想法吗? :(
答案 0 :(得分:6)
非常感谢我的同事(Bogdan R.),我们发现FocusManager.IsFocusScope对Window(WPF)和Page(XBAP)有不同的默认值,即后者是假的。
只需在Page元素上设置FocusManager.IsFocusScope即可解决问题。
答案 1 :(得分:3)
也可以尝试使用Keyboard.FocusedElement代替