2010-08-24 23 views
5

Quiero ver el evento cuando se hace clic en una vista de lista en un espacio vacío, es decir, al hacer clic en ningún elemento dentro del control de vista de lista.¿Cómo se maneja el evento cuando se hace clic en el espacio vacío?

He buscado en la lista de eventos de la lista pero no he encontrado ninguno. ¿Cómo puedo hacer esto? Por favor ayuda!

[Editar] Lo que quiero hacer si pudiera ver este evento: Deseleccione todos los elementos en la vista de lista.

+0

Creo que esto podría ser un duplicado de http://stackoverflow.com/questions/23133527/wpf-listbox-remove-selection-by-clicking-on-a-blank-spot – J3soon

Respuesta

0

ListBoxItem control maneja los clics en ListBox. Usted deberá:

  • uso PreviewMouseDown evento el cuadro de lista
  • Agregar controlador de eventos en el código a través de myListBox.AddHandler método

Ver How to Attach to MouseDown Event on ListBox para la explicación y ejemplos de código.

+0

Como nota al margen: elementos manejará eventos MouseDown pero NO eventos MouseUp. Por lo tanto, obtienes un evento MouseUp en el ListBox/ListView incluso cuando el clic ocurre en un elemento o en el espacio vacío. –

5

Si adjunta un controlador al evento MouseLeftButtonDown en ListView, solo se activará cuando se haga clic en áreas fuera de ListViewItem. Cualquier clic dentro de los elementos será manejado por los mismos elementos para controlar el comportamiento de selección de ListView.

Puede realizar cambios en las áreas seleccionables ajustando el Fondo ({x: Null} no se puede hacer clic, cualquier otra cosa) y el Margen de ListViewItems configurando un ItemContainerStyle en el ListView. También asegúrese de que no esté utilizando un fondo nulo en el ListView (el blanco es el predeterminado, el transparente también funciona).

0

Encontré que si anteriormente había hecho clic solo en un elemento en la vista de lista (y por lo tanto seleccionándolo), luego hice doble clic en el espacio vacío en la lista para ver el resultado indeseado de haber actuado el elemento previamente seleccionado como si se ha hecho doble clic (en lugar del espacio vacío). Para evitar esto he utilizado el siguiente código (vb.net):

Private Sub ListView1_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles ListView1.MouseLeftButtonDown 

    ListView1.SelectedIndex = -1 

End Sub 

con este código en el lugar haciendo doble clic en el espacio vacío de-selecciona cualquier elemento seleccionado previamente y tiene el efecto deseado de la nada aparece a suceder para el usuario cuando hacen doble clic en un área vacía.

Cuestiones relacionadas