【问题标题】:WPF: how do i handle a click on a ListBox item?WPF:如何处理对 ListBox 项的单击?
【发布时间】:2011-08-04 09:08:29
【问题描述】:

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

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

【问题讨论】:

标签: c# wpf listboxitem


【解决方案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】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        • 2011-03-26
        相关资源
        最近更新 更多