2009-10-23 17 views
0

我在wpf中嵌套了ListView。用户可以双击列表项目并打开项目文档。 所以,我有ListView1_MouseDoubleClick和孩子listview2 ListView2_MouseDoubleClick如何处理mousedoublick点击更好的方式?

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

所以......为了尽可能我知道有两种解决方法解决此问题:

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

code: 
Listview2_mousedoubleclick() 
{ 
    flag=true; 
} 

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

B)使用VisualTreeHelper和分析e.Source找到哪一个应该回应...

问:哪种方式更好?

回答

1

我想你在这里看到一个路由事件冒泡控制树。当你处理它时,你可以在事件本身中设置一个Handled属性来阻止它进一步冒泡。因为我的WPF知识有点生疏,所以我不清楚具体细节,但有一种方法可以在您控制的特定点阻止这样的事件处理链。

+0

是的!我只是想停止事件处理链。 我试过e.Handled = true;但ListView1仍然能够接收鼠标点击事件.. // REF:private void ListView2_MouseDoubleClick(object sender,MouseButtonEventArgs e) – ariso 2009-10-23 15:39:47

相关问题