问题
每当用户单击它之外的任何地方时,我都希望我的列表框 UnselectAll() 。
到目前为止我所做的
以下代码适用于应用程序内的所有点击:
private void ListBox_LostFocus(object sender, RoutedEventArgs e)
{
((ListBox)sender).UnselectAll();
}
单击列表框外的任何内容都会使其失去焦点,然后取消选择里面的所有内容。伟大的。
但是,如果我单击应用程序主窗口外的某些内容,则不会从 ListBox 或 ListBoxItem 获得 LostFocus 事件。相反,ListBoxItem 进入 SelectedUnfocused 状态。据我所知,除了订阅 Storyboard.Completed 的 SelectedUnfocused 视觉状态故事板的事件,或者侦听 Window.Activated/Deactivated 事件,然后通过用户界面。我觉得我遗漏了一些明显的东西,如果可能的话,我想避免那种程度的骇客。
问题
显然,WPF 能够检测到这种情况——它将控件置于正确的视觉状态——那么我是否有一些干净的方法来做同样的事情?