我在wpf中嵌套了ListView
。用户可以双击列表项并打开项目文档。
所以,我有ListView1_MouseDoubleClick
和子listview2 ListView2_MouseDoubleClick
。
但是,当用户双击listview2项时,listview1也会收到MouseDoubleClick
事件。
所以...为了解决这个问题,据我所知有两种解决方案:
A)添加bool标志并设置为false
code:
Listview2_mousedoubleclick()
{
flag=true;
}
ListView1_mousedoubleclick()
{
if (flag==true) { flag=false;return}
}
B)使用VisualTreeHelper
并分析e.Source
以找出应该响应的内容......
问题:哪种方式更好?
答案 0 :(得分:1)
我认为你在这里看到一个路由事件冒泡控制树。处理它时,您可以在事件本身中设置Handled
属性,以防止它进一步冒泡。我现在不知道确切的具体细节,因为我的WPF知识有点生疏,但有一种方法可以在你控制的某个点停止这样的事件处理链。