2011-05-17 19 views
10

在我的TreeView中,我有不同的事件MouseDown/MouseUp等,但是當我做得足夠快時,TreeView展開/摺疊TreeNode。我不想要這種烘焙行爲。如何禁用WPF TreeView中的雙擊行爲?

有沒有辦法可以禁用它?

+0

相關問題在這裏:http://stackoverflow.com/questions/6037042/disable-doubleclicks/6037293#6037293 – Matt 2011-05-17 23:43:14

回答

17

你可以抑制樹型視圖的雙擊事件,像這樣:

XAML:

<TreeView DockPanel.Dock="Left" TreeViewItem.PreviewMouseDoubleClick="TreeViewItem_PreviewMouseDoubleClick"> 
    <TreeViewItem Header="Node Level 1" IsExpanded="True" > 
     <TreeViewItem Header="Node Level 2.1" > 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
     <TreeViewItem Header="Node Level 2.2"> 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

代碼:

private void TreeViewItem_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    //this will suppress the event that is causing the nodes to expand/contract 
    e.Handled = true; 
} 

UPDATE

根據MSDN docs

雖然這個路由事件似乎 遵循隧道的路線,通過一個 元素樹,它實際上是沿各的UIElement的 元素樹提出了一個直接 路由事件... 當 ClickCount等於2時,想要處理 鼠標雙擊的控制作者應使用 PreviewMouseLeftButtonDown事件。這將 導致處理狀態 在 樹中處理該事件的元素 中的情況下適當地傳播。

我不知道這爲什麼你有問題或不是,但我們會做到這一點的MSDN和使用方式PreviewMouseLeftButtonDown代替:

XAML:

<TreeView DockPanel.Dock="Left" TreeViewItem.PreviewMouseLeftButtonDown="TreeView_PreviewMouseLeftButtonDown"> 
    <TreeViewItem Header="Node Level 1" IsExpanded="True"> 
     <TreeViewItem Header="Node Level 2.1" > 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
     <TreeViewItem Header="Node Level 2.2"> 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

代碼:

private void TreeView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    if (e.ClickCount > 1) 
    { 
     //here you would probably want to include code that is called by your 
     //mouse down event handler. 
     e.Handled = true; 
    } 
} 

我測試過這一點,我多少次點擊

它的作品無論
+0

剛剛嘗試,但它仍然做到了。我寫了'PreviewMouseDoubleClick'而不是'TreeViewItem.PreviewMouseDoubleClick',這有什麼關係嗎? – 2011-05-17 22:55:26

+0

我給出的例子都是有效的。也許你可以發佈你的代碼,也許有什麼干擾? – 2011-05-17 23:09:21

+0

謝謝,讓我在一個新項目中嘗試一下,然後確定。 – 2011-05-17 23:16:31