ListBox在选择了ListBoxItem时触发lostfocus事件,如何避免这种情况? 我希望LostFocus只有在外面的东西得到焦点时才能触发。
答案 0 :(得分:0)
问题是,ListBox
永远不会成为焦点,只有它的项目才能实现,所以为了实现这一点,我们必须使用它们。可能有一些优雅的解决方案,但这是我的看法。
我将代码放在包含Window
的{{1}}后面的代码中:
ListBox
private void myListBox_LostFocus(object sender, RoutedEventArgs e)
{
var focused = FocusManager.GetFocusedElement(this);
var item = focused as ListBoxItem;
if (item == null || !lbMain.Items.Contains(item.DataContext))
{
//do stuff
}
}
语句中的第二次检查是否存在其他列表框。如果你的场景更复杂,你很可能需要添加一些调整:例如,如果两个ListBox具有相同的if
。
答案 1 :(得分:-1)
尝试将ListBoxItem属性设置为Focusable为False。最终在ListBoxItem DataTemplate中的元素。