2010-08-09 53 views
3

我正在开发基于TreeView的控件,并且我的双击事件继续冒泡我的TreeViewItem节点。处理的RoutedEvent继续冒泡树

目标是让TreeViewItem在双击时展开或折叠。

我有一个风格,将MouseDoubleClick事件的事件处理程序应用于每个TreeViewItem

下面是处理该事件


private void TreeViewItemDoubleClicked(object sender, RoutedEventArgs e) 
{ 
    // Get the specific tree view item that was double clicked 
    TreeViewItem treeViewItem = sender as TreeViewItem; 

    // not null? 
    if(null != treeViewItem) 
    { 
     // Switch expanded state 
     if(true == treeViewItem.IsExpanded) 
     { 
      treeViewItem.IsExpanded = false; 
     } 
     else 
     { 
      treeViewItem.IsExpanded = true; 
     } 

     // Set event handled 
     e.Handled = true; // [1] 
    } 
} 

也能正常工作的顶层TreeViewItem然而,当一个孩子被双击,事件冒泡的树造成整个分支折叠代码。为什么事件继续冒泡?正如注意到[1]我设置事件处理。

回答

1

恨回答我的问题,但这里是我最终来到了使用该解决方案。

无论跨指定的MouseDoubleClick提高每个树型视图的分支(从小孩到根)数源的之后,如果该事件被处理,我利用这个问题的答案:

WPF TreeView, get TreeViewItem in PreviewMouseDown event

获取鼠标事件下的TreeViewItem。如果当前发件人等于鼠标事件的TreeViewItem,则根据需要展开/折叠。否则,我只是无视事件而什么都不做。

-2

尝试扩张之前设置Handled /折叠...

+0

嗨,感谢您的反馈。我试过了,行为是一样的。事件继续发生。 – Matthew 2010-08-09 22:11:46