2011-08-04 27 views
15

मेरे डब्ल्यूपीएफ ऐप में मैं एक सूची बॉक्स चयन बदल रहा हूं और यह ठीक चलता है।WPF: मैं ListBox आइटम पर क्लिक कैसे संभाल सकता हूं?

अब मुझे एक क्लिक ईवेंट (यहां तक ​​कि पहले से चयनित आइटम के लिए) को संभालने की आवश्यकता है; मैंने माउसडाउन की कोशिश की है लेकिन यह काम नहीं करता है। मैं किसी आइटम पर ListBox पर क्लिक कैसे कर सकता हूं?

धन्यवाद!

+0

यह यहां उत्तर है: http://stackoverflow.com/ए/82160 9/58768 –

+0

@modosansreves कि प्रश्न क्लिक के बारे में पूछता है। क्लिक विशेष है। स्पष्ट रूप से अपहरण और चयन परिवर्तन में बदल गया। डबलक्लिक नहीं है ... –

+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

लिस्टबॉक्स आंतरिक रूप से माउस नीचे का उपयोग करता चयन बदल करने के लिए। तो आप पूर्वावलोकन माउस नीचे घटना का उपयोग कर सकते हैं।

अलावा नीचे पूर्वावलोकन माउस से, आप EventManager.RegisterClassHandler उपयोग कर सकते हैं ...

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

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

मुझे पता है कि अगर यह मदद करता है चलो ...

संबंधित मुद्दे