在wpf中,有时点击空白处控件失去焦点事件无法触发,要解决这个问题,可以在主窗体mainwindow中重写MouseDown事件
MainWindowView.xaml
cm:Message.Attach="[Event MouseDown] = [Action Window_MouseDown($source, $eventArgs)]
MainWindowViewModel.cs
public void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
Keyboard.ClearFocus();
}
当点击空白处会触发MouseDown事件,调用Keyboard.ClearFocus();会清除所有焦点。
在控件中重写LostKeyboardFocus事件
[Event LostKeyboardFocus] = [Action BthCodeClick_LostKeyboardFocus($source, $eventArgs)]
public void BthCodeClick_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
//按钮失去焦点事件
}
这样点击空白处即可触发按钮的失去焦点事件