2009-10-23 16 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

相關問題