WPF: как мне обрабатывать щелчок на элементе ListBox?
В моем приложении WPF я обрабатываю событие ListBox SelectionChanged, и оно работает нормально.
Теперь мне нужно обработать событие щелчка (даже для уже выбранного элемента); Я пробовал MouseDown, но он не работает. Как я могу обработать щелчок ListBox на элементе?
Ответы
Ответ 1
Просто обработать событие PreviewMouseDown:
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
}
}
Ответ 2
Возможно, попробуйте событие PreviewMouseDown
. Событие MouseDown
проглатывается и преобразуется в событие SelectionChanged
.
Единственным недостатком является то, что PreviewMouseDown
произойдет до SelectionChanged
.
Ответ 3
Listbox внутренне использует мышь вниз для изменения выбора. Таким образом, вы можете использовать событие предварительного просмотра мыши.
Помимо предварительного просмотра мыши, вы можете использовать EventManager.RegisterClassHandler...
EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler));
private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e)
{
}
Сообщите мне, если это поможет...