我有一个窗口:
<Window ...
LostFocus="SpecialLettersLayout_OnLostFocus">
....
</Window>
在这个窗口中我有一个画布,其中有一个Path对象,它有一个非矩形的形式。
在此窗口中,我调用了LostFocus事件。在该窗口的.xaml.cs文件中,我定义了SpecialLettersLayout_OnLostFocus事件:
private void SpecialLettersLayout_OnLostFocus(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
在我的应用程序中,我有一个窗口,当我点击一个按钮时,会打开这个窗口。此窗口小于背景窗口,因此这意味着背景窗口仍然可见。
当我点击背景窗口时,我想要隐藏小窗口,因为它的焦点丢失了。但是,不会触发SpecialLettersLayout_OnLostFocus事件。为什么会这样?
答案 0 :(得分:1)
LostFocus
事件用于逻辑焦点。你需要的是一个物理焦点,它有一个名为LostKeyboardFocus
的名字。
逻辑焦点涉及使用FocusManager
。我不确定触发LostFocus
但是它不是您认为的传统LostFocus
。相反,我们必须使用LostKeyboardFocus
。此外,您可能需要更改处理程序以适应LostKeyboardFocus
事件。处理程序类型为KeyboardFocusChangedEventHandler
。
答案 1 :(得分:1)
最终帮助我的是Deactivated事件,它与ShowDialog()无法结合使用,所以我将它与Show()一起使用。