ListBox无法识别MouseLeftButtonDown事件?

4

我遇到了一个大问题,我已经尝试了所有我能想到的方法,但是没有找到解决方案。

我有一个带有DataTemplate的listBox。我想使用MouseLeftButtonDown和MouseLeftButtonUp事件来检查所选项是否与用户单击的项相同。

问题在于MouseLeftButtonUp事件被识别了,但是MouseLeftButtonDown事件没有被识别。

我的XAML代码的一部分:

<ListBox Grid.Row="1" MouseLeftButtonDown="listBox_Faits_MouseLeftButtonDown"
                      MouseLeftButtonUp="listBox_Faits_MouseLeftButtonUp">

代码背后:

    private void listBox_Faits_MouseLeftButtonUp(object sender, MouseEventArgs e)
    {
        ...
    }
    private void listBox_Faits_MouseLeftButtonDown(object sender, MouseEventArgs e)
    {
        ...
    }

有人知道为什么吗?

谢谢您,

祝好,

Flo

1个回答

13

这是因为鼠标左键按下事件被列表框项处理了。要处理已处理的事件,可以在代码后台中订阅它,并指定您要处理已处理的事件,像这样:

listBox_Faits.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler(listBox_Faits_MouseLeftButtonDown), true);

我本来想建议尝试使用PreviewMouseLeftButtonDown事件,但这种方式可以给你更多的控制。 - Tom
嗯... Pavlo,我尝试了你的解决方案,但事件没有被识别! - Flo
应该可以工作。请再检查一遍。别忘了将"true"传递给AddHandler的最后一个参数!另外,正如@Tom所提到的,您可以订阅PreviewMouseLeftButtonDown事件。 - Pavlo Glazkov
我已经检查了一千次。但我相信你的解决方案,它应该能够工作...所以我最后再检查一遍!(并且我会检查所有的代码,确保没有任何原因导致它不能工作) 谢谢,如果它能够工作,我会通知你的! - Flo
哦,天啊,它起作用了...问题是它创建了第二个MouseLeftButtonEvent处理程序,带有MouseButtonEventArgs...但我正在使用MouseEventArgs...非常感谢你,Pavlo! - Flo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接