2011-08-04 16 views
15

en mi aplicación WPF estoy manejando un evento ListBox SelectionChanged y funciona bien.WPF: ¿cómo manejo un clic en un elemento de ListBox?

Ahora necesito manejar un evento de clic (incluso para el elemento ya seleccionado); He intentado con MouseDown pero no funciona. ¿Cómo puedo manejar un ListBox haciendo clic en un elemento?

Gracias!

+0

Esto se responde aquí: http://stackoverflow.com/a/821609/58768 –

+0

@modosansreves esa pregunta pregunta sobre Click. Click es especial. Aparentemente secuestrado y convertido en SelectionChanged. DoubleClick no es ... –

+0

Aquí hay una pregunta similar; cuya respuesta es un buen resumen de todos los enfoques. http://stackoverflow.com/q/1271375/1175496 –

Respuesta

6

Quizás pruebe el evento PreviewMouseDown. El evento MouseDown se traga y convierte al evento SelectionChanged.

El único inconveniente es que el PreviewMouseDown se producirá antes que el SelectionChanged.

29

Sólo manejar evento 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

cuadro de lista internamente utiliza el ratón hacia abajo para realizar la selección ha cambiado. Para que pueda usar el evento de previsualización del mouse hacia abajo.

Aparte de vista previa del ratón, puede utilizar EventManager.RegisterClassHandler ...

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

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

Déjame saber si esto ayuda ...

Cuestiones relacionadas