WPF:这种行为是针对性的吗? PreviewLostKeyboardFocus和LostKeyboardFocus

时间:2017-03-28 15:39:29

标签: c# wpf focus

我有一个TextBox,我想在用户离开TextBox时保存内容。我打算使用PreviewLostKeyboardFocus,但它并没有按预期工作。

<TextBox PreviewLostKeyboardFocus="textBox2_PreviewLostKeyboardFocus" 
         LostKeyboardFocus="textBox2_LostKeyboardFocus" />

当我单击同一应用程序内的另一个控件时,我首先获取PreviewLostKeyboardFocus事件,然后获取LostKeyboardFocus事件。但是当我激活另一个应用程序时,PreviewLostKeyboardFocus事件根本不会发生。我只得到LostKeyboardFocus。

1 个答案:

答案 0 :(得分:0)

这是预期的行为。

切换到其他应用程序时,不会引发PreviewLostKeyboardFocus事件。

首先处理事件的主要目的是防止键盘焦点发生变化:https://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.previewlostkeyboardfocus(v=vs.110).aspx

如果在切换到另一个应用程序时引发了该事件,则可以通过处理此事件来防止键盘焦点发生更改,并将Handled的{​​{1}}属性设置为{ {1}}这将有效地防止用户在运行应用程序时将任何其他元素聚焦在屏幕上。