私のWPFアプリでは、ListBox SelectionChangedイベントを処理しており、正常に実行されます。
次に、クリックイベントを処理する必要があります(すでに選択されているアイテムの場合でも)。 MouseDownを試しましたが、機能しません。アイテムのリストボックスクリックを処理するにはどうすればよいですか?
PreviewMouseDownイベントを処理するだけです。
private void listBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var item = ItemsControl.ContainerFromElement(listBox, e.OriginalSource as DependencyObject) as ListBoxItem;
if (item != null)
{
// ListBox item clicked - do some cool things here
}
}
おそらく PreviewMouseDown
イベントを試してください。 MouseDown
イベントは飲み込まれ、SelectionChanged
イベントに変換されます。
唯一の欠点は、PreviewMouseDown
がSelectionChanged
の前に発生することです。
リストボックスは内部的にマウスダウンを使用して、変更された選択を実行します。したがって、プレビューマウスダウンイベントを使用できます。
マウスを下にプレビューする以外に、EventManager.RegisterClassHandler ...を使用できます。
EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler));
private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e)
{
}
これが役立つかどうか教えてください...