WPF: как мне обработать щелчок по элементу ListBox? - PullRequest
16 голосов
/ 04 августа 2011

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

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

Ответы [ 3 ]

31 голосов
/ 04 августа 2011

Просто обработайте событие 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
    }
}
6 голосов
/ 04 августа 2011

Возможно, попробуйте событие PreviewMouseDown.Событие MouseDown поглощается и преобразуется в событие SelectionChanged.

Единственным недостатком является то, что PreviewMouseDown произойдет до SelectionChanged.

3 голосов
/ 04 августа 2011

Listbox внутренне использует мышь, чтобы выполнить изменение выбора.Таким образом, вы можете использовать предварительный просмотр события мыши вниз.

Помимо предварительного просмотра мыши вниз, вы можете использовать EventManager.RegisterClassHandler ...

     EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler));

     private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e)
     {
     }

Дайте мне знать, если это поможет ...

...