WPF:我如何处理ListBox项目的点击?

时间:2011-08-04 09:08:29

标签: c# wpf listboxitem

在我的WPF应用程序中,我正在处理一个ListBox SelectionChanged事件,它运行正常。

现在我需要处理点击事件(即使已经选择的项目);我尝试过MouseDown,但它不起作用。如何处理ListBox单击某个项目?

3 个答案:

答案 0 :(得分:31)

只需处理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
    }
}

答案 1 :(得分:6)

也许尝试PreviewMouseDown事件。吞下MouseDown事件并将其转换为SelectionChanged事件。

唯一的缺点是PreviewMouseDown将出现在SelectionChanged之前。

答案 2 :(得分:3)

列表框内部使用鼠标按钮执行更改选择。因此,您可以使用预览鼠标按下事件。

除了预览鼠标按下,您还可以使用EventManager.RegisterClassHandler ...

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

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

如果这有帮助,请告诉我......