我有一个带有ItemTemplate的ListBox,其中包含一个与鼠标交互的控件。这会干扰ListBox的选择功能,即单击控件不会选择该项。这是因为ListBoxItem在OnMouseLeftButtonDown中将鼠标事件的Handled属性设置为true。我尝试了以下方法:
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {
base.OnMouseLeftButtonDown(e);
e.Handled = false;
}
但是ListBoxItem“占用”了鼠标并阻止控件进行自己的交互。然后我又有了另一个想法。
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {
base.OnMouseLeftButtonDown(e);
((ListBoxItem)VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this)))).IsSelected = true;
}
目前已经有一种可行的解决方案,但是感觉更像是一个丑陋的曲线救国,而不是一个优雅的解决方案。是否有更好的解决方案,不依赖于可视树的确切内容?