2010-08-09 55 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