当选择lits ListBoxItem时,ListBox会触发丢失焦点事件,如何避免这种情况?

时间:2014-06-04 11:58:24

标签: wpf listbox

ListBox在选择了ListBoxItem时触发lostfocus事件,如何避免这种情况? 我希望LostFocus只有在外面的东西得到焦点时才能触发。

2 个答案:

答案 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中的元素。