Подтвердить что ты не робот

WPF: как мне обрабатывать щелчок на элементе ListBox?

В моем приложении WPF я обрабатываю событие ListBox SelectionChanged, и оно работает нормально.

Теперь мне нужно обработать событие щелчка (даже для уже выбранного элемента); Я пробовал MouseDown, но он не работает. Как я могу обработать щелчок ListBox на элементе?

4b9b3361

Ответ 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)
     {
     }

Сообщите мне, если это поможет...