У меня есть ListBox с ItemTemplate, который содержит элемент управления, взаимодействующий с мышью. Это влияет на функциональность выбора ListBox, т. Е. Нажатие элемента управления не выбирает элемент. Это связано с тем, что ListBoxItem устанавливает для свойства Handled события мыши значение true в OnMouseLeftButtonDown. Я попробовал следующее
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {
base.OnMouseLeftButtonDown(e);
e.Handled = false;
}
но ListBoxItem & ldquo; вступает во владение & rdquo; мышь и препятствует тому, чтобы контроль сделал свое собственное взаимодействие. Тогда у меня была другая идея
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {
base.OnMouseLeftButtonDown(e);
((ListBoxItem)VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this)))).IsSelected = true;
}
, который на самом деле работает, но больше похож на уродливый клудж, чем на элегантное решение. Есть ли лучшие решения, которые не зависят от точного содержимого визуального дерева?