WPF:如何处理在列表框项上的单击

本文关键字:列表 单击 何处理 处理 WPF | 更新日期: 2023-09-27 18:04:33

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

现在我需要处理一个点击事件(即使已经选择的项目);我试过鼠标向下,但它不起作用。如何处理在列表框中单击一个项目?

WPF:如何处理在列表框项上的单击

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

也许可以试试PreviewMouseDown事件。MouseDown事件被吞入并转化为SelectionChanged事件。

唯一的缺点是PreviewMouseDown将在SelectionChanged之前发生。

Listbox内部使用鼠标向下执行选择更改。所以你可以使用预览鼠标向下事件

除了预览鼠标向下,你还可以使用EventManager.RegisterClassHandler…

     EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler));
     private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e)
     {
     }