2011-08-04 10 views
15

私のWPFアプリケーションでは、ListBox SelectionChangedイベントを処理しているし、正常に動作します。WPF:ListBoxアイテムのクリックを処理するにはどうすればいいですか?

今、私はクリックイベントを処理する必要があります(既に選択されているアイテムであっても)。 MouseDownを試しましたが、動作しません。 アイテムのListBoxクリックを処理するにはどうすればよいですか?

ありがとうございます!

+0

 EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler)); private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e) { } 

は、このことができますなら、私を知ってみましょう

別にダウンプレビューマウスから、あなたがEventManager.RegisterClassHandlerを使用することができます... ...:http://stackoverflow.com/a/821609/58768 –

+0

@modosansreves that questions asks aboutクリックしてください。クリックは特別です。明らかにハイジャックされ、SelectionChangedに変わった。 DoubleClickはそうではありません... –

+0

これは同様の質問です。その答えはすべてのアプローチの素敵な要約です。 http://stackoverflow.com/q/1271375/1175496 –

答えて

6

おそらくPreviewMouseDownイベントを試してください。 MouseDownイベントは飲み込まれ、SelectionChangedイベントに変換されます。

PreviewMouseDownSelectionChangedの前に発生するという欠点のみがあります。

29

だけ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 
    } 
} 
3

リストボックスは、内部で選択が変更を実行するには、下のマウスを使用しています。プレビューのマウスダウンイベントを使用することができます。これは、ここで回答され

関連する問題