2011-08-04 11 views
15

ListBox SelectionChanged olayını ele alıyorum ve iyi çalışıyor.WPF: Bir ListBox öğesinde bir tıklamayla nasıl başa çıkabilirim? WPF uygulamasında

Şimdi bir tıklama olayını ele almam gerekiyor (önceden seçilmiş öğe için bile); MouseDown'ı denedim ama çalışmıyor. ListBox'a bir öğeye tıklamayı nasıl yapabilirim?

Teşekkürler!

+0

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

bu yardımcı olur bana bildirin

dışında aşağı önizleme fareden, sen EventManager.RegisterClassHandler kullanabilirsiniz ... ...: http://stackoverflow.com/a/821609/58768 –

+0

Soruyu soran sorular hakkında sorular sorar. Tıklama özeldir. Görünüşe göre kaçırıldı ve SelectionChanged'e döndü. DoubleClick değil ... –

+0

İşte benzer bir soru; cevabı tüm yaklaşımların güzel bir özetidir. http://stackoverflow.com/q/1271375/1175496 –

cevap

6

Belki de PreviewMouseDown etkinliğini deneyin. MouseDown olayı yutulur ve SelectionChanged etkinliğine dönüştürülür.

Yalnızca olumsuz olan, PreviewMouseDown'un SelectionChanged'dan önce gerçekleşmesidir.

29

Sadece PreviewMouseDown olay işlemek:

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

liste kutusu içten seçim değişti gerçekleştirmek için aşağı fare kullanır. Böylece önizleme fare aşağı olayını kullanabilirsiniz. Bu burada cevaplanır