In my WPF app I'm handling a ListBox SelectionChanged event and it runs fine.
Now I need to handle a click event (even for the already selected item); I've tried MouseDown but it does not work. How can I handle a ListBox click on an item?
In my WPF app I'm handling a ListBox SelectionChanged event and it runs fine.
Now I need to handle a click event (even for the already selected item); I've tried MouseDown but it does not work. How can I handle a ListBox click on an 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...