0

我已经嵌套ListView在 wpf 中。用户可以双击列表项并打开项目文档。所以,我有ListView1_MouseDoubleClick和孩子 listview2 ListView2_MouseDoubleClick

但是,当用户双击 listview2 item 时,listview1 也会收到该MouseDoubleClick事件。

所以......据我所知,为了解决这个问题,有两种解决方案:

A)添加一个布尔标志并设置为false

code:
Listview2_mousedoubleclick()
{
    flag=true;
}

ListView1_mousedoubleclick()
{
    if (flag==true) { flag=false;return}
}

B) 使用VisualTreeHelper并分析e.Source以找出应该回应的人...

问题:哪种方式更好?

4

1 回答 1

1

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

于 2009-10-23T15:32:41.063 回答