Como capturar um clique do mouse em um item em uma caixa de listagem no WPF?
Eu quero ser notificado quando um item em um ListBox é clicado pelo mouse, se ele já está selecionado ou não.
Eu procurei e encontrei isto: (http://kevin-berridge.blogspot.com/2008/06/wpf-listboxitem-double-click.html veja os comentários)
private void AddDoubleClickEventStyle(ListBox listBox, MouseButtonEventHandler mouseButtonEventHandler)
{
if (listBox.ItemContainerStyle == null)
listBox.ItemContainerStyle = new Style(typeof(ListBoxItem));
listBox.ItemContainerStyle.Setters.Add(new EventSetter()
{
Event = MouseDoubleClickEvent,
Handler = mouseButtonEventHandler
});
}
//Usage:
AddDoubleClickEventStyle(listView1, new MouseButtonEventHandler(listView1_MouseDoubleClick));
Isso funciona, mas faz isso por umDoubleClick
. Eu não posso fazê-lo funcionar por um único clique embora. eu tenteiMouseLeftButtonDownEvent
- como não parece haver umMouseClick
evento, mas não está sendo chamado.
Uma pergunta secundária um pouco mais geral: como posso ver quais eventos existem e quais manipuladores correspondem a eles e quando eles realmente fazem alguma coisa? Por exemplo, o que me diz que por umMouseDoubleClickEvent
eu preciso deMouseButtonEventHandler
? Talvez por umMouseLeftButtonDownEvent
Eu preciso de algum outro manipulador e é por isso que não está funcionando?
Eu também tentei subclassificaçãoListBoxItem
e anularOnMouseLeftButtonDown
- mas também não é chamado.
Marc