WPF: how do i handle a click on a ListBox item?
Just handle PreviewMouseDown event:
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 }}
Perhaps try the PreviewMouseDown
event. The MouseDown
event gets swallowed and converted to the SelectionChanged
event.
Only downside is that the PreviewMouseDown
will occur before the SelectionChanged
.
Listbox internally uses the mouse down to perform selection changed. So you can use preview mouse down event.
Apart from preview mouse down, you can use EventManager.RegisterClassHandler...
EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler)); private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e) { }
Let me know if this helps...