窗口的LostFocus事件未触发

时间:2014-09-17 14:37:00

标签: wpf xaml events window focus

我有一个窗口:

<Window ...
    LostFocus="SpecialLettersLayout_OnLostFocus">

    ....    

</Window>

在这个窗口中我有一个画布,其中有一个Path对象,它有一个非矩形的形式。

在此窗口中,我调用了LostFocus事件。在该窗口的.xaml.cs文件中,我定义了SpecialLettersLayout_OnLostFocus事件:

private void SpecialLettersLayout_OnLostFocus(object sender, RoutedEventArgs e)
    {
        throw new NotImplementedException();
    }

在我的应用程序中,我有一个窗口,当我点击一个按钮时,会打开这个窗口。此窗口小于背景窗口,因此这意味着背景窗口仍然可见。

当我点击背景窗口时,我想要隐藏小窗口,因为它的焦点丢失了。但是,不会触发SpecialLettersLayout_OnLostFocus事件。为什么会这样?

2 个答案:

答案 0 :(得分:1)

LostFocus事件用于逻辑焦点。你需要的是一个物理焦点,它有一个名为LostKeyboardFocus的名字。

逻辑焦点涉及使用FocusManager。我不确定触发LostFocus但是它不是您认为的传统LostFocus。相反,我们必须使用LostKeyboardFocus。此外,您可能需要更改处理程序以适应LostKeyboardFocus事件。处理程序类型为KeyboardFocusChangedEventHandler

答案 1 :(得分:1)

最终帮助我的是Deactivated事件,它与ShowDialog()无法结合使用,所以我将它与Show()一起使用。