2011-08-04 76 views
15

在我的WPF應用程序我正在處理一個ListBox SelectionChanged事件,它運行良好。WPF:我如何處理列表框項目上的點擊?

現在我需要處理一個點擊事件(即使是已經選擇的項目);我試過MouseDown但它不起作用。 我如何處理列表框點擊一個項目?

謝謝!

+0

這是在這裏得到解答:http://stackoverflow.com/a/821609/58768 –

+0

@modosansreves此問題詢問Click。點擊是特殊的。顯然被劫持並變成了SelectionChanged。 DoubleClick不是... –

+0

這是一個類似的問題;其答案是所有方法的一個很好的總結。 http://stackoverflow.com/q/1271375/1175496 –

回答

6

也許試試PreviewMouseDown事件。 MouseDown事件被吞併並轉換爲SelectionChanged事件。

唯一不足的是,PreviewMouseDown會發生在SelectionChanged之前。

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

列表框在內部使用鼠標按下進行選擇改變。所以你可以使用預覽鼠標按下事件。

除了預覽鼠標下來,你可以使用EventManager.RegisterClassHandler ...

 EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler)); 

    private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e) 
    { 
    } 

讓我知道如果這能幫助...

相關問題