Desidero ricevere una notifica quando un oggetto in una ListBox viene cliccato con il mouse, sia che sia già selezionato o meno.Come catturare un clic del mouse su un oggetto in un ListBox in WPF?
Ho cercato e trovato questo: (http://kevin-berridge.blogspot.com/2008/06/wpf-listboxitem-double-click.html si vedano i commenti)
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));
Questo funziona, ma lo fa per un DoubleClick
. Non riesco a farlo funzionare per un solo clic però. Ho provato MouseLeftButtonDownEvent
- in quanto non sembra essere un evento MouseClick
, ma non viene chiamato.
Una domanda un po 'più generale: come posso vedere quali eventi esistono e quali gestori corrispondono a loro e quando effettivamente fanno qualcosa? Ad esempio, cosa mi dice che per un MouseDoubleClickEvent
ho bisogno di un MouseButtonEventHandler
? Forse per un MouseLeftButtonDownEvent
ho bisogno di qualche altro gestore ed è per questo che non funziona?
Ho anche provato la sottoclasse ListBoxItem
e l'override OnMouseLeftButtonDown
- ma non viene chiamato neanche.
Marc
Ho scelto di avvolgere ogni listboxitem con il pulsante e utilizzare invece l'evento button. https://stackoverflow.com/questions/17057022/getting-listbox-item-index-from-button-click – Dummy