マウスと対話するコントロールを含む 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;
}
これは実際には機能しますが、エレガントなソリューションというよりも、醜いクラッジのように感じます. ビジュアル ツリーの正確な内容に依存しない、より良い解決策はありますか?