Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何更好地处理鼠标点击?_Wpf_Listview_Event Handling_Mouseevent - Fatal编程技术网

Wpf 如何更好地处理鼠标点击?

Wpf 如何更好地处理鼠标点击?,wpf,listview,event-handling,mouseevent,Wpf,Listview,Event Handling,Mouseevent,我在wpf中嵌套了ListView。用户可以双击列表项并打开项目文档。 因此,我有ListView1\u MouseDoubleClick和子listview2listview2\u MouseDoubleClick 但是,当用户双击listview2项目时,listview1也会收到MouseDoubleClick事件 所以。。。据我所知,要解决此问题,有两种解决方案: A) 添加bool标志并设置为false code: Listview2_mousedoubleclick() {

我在wpf中嵌套了
ListView
。用户可以双击列表项并打开项目文档。 因此,我有
ListView1\u MouseDoubleClick
和子listview2
listview2\u MouseDoubleClick

但是,当用户双击listview2项目时,listview1也会收到
MouseDoubleClick
事件

所以。。。据我所知,要解决此问题,有两种解决方案:

A) 添加bool标志并设置为false

code:
Listview2_mousedoubleclick()
{
    flag=true;
}

ListView1_mousedoubleclick()
{
    if (flag==true) { flag=false;return}
}
B) 使用
VisualTreeHelper
并分析
e.Source
,找出应该响应的选项


问题:哪种方式更好?

我想您看到了一个路由事件在这里的控制树上冒泡。在处理事件时,可以在事件本身中设置
Handled
属性,以阻止它进一步冒泡。我现在不知道确切的细节,因为我的WPF知识有点生疏,但有一种方法可以在您控制的某个点停止这样的事件处理链。

是的!我只是想停止事件处理链。我已经试过了;但是ListView1仍然能够接收鼠标单击事件//REF:private void ListView2_MouseDoubleClick(对象发送器,MouseButtonEventArgs e)