在我的TreeView
中,我有不同的事件MouseDown
/MouseUp
等,但是當我做得足夠快時,TreeView
展開/摺疊TreeNode
。我不想要這種烘焙行爲。如何禁用WPF TreeView中的雙擊行爲?
有沒有辦法可以禁用它?
在我的TreeView
中,我有不同的事件MouseDown
/MouseUp
等,但是當我做得足夠快時,TreeView
展開/摺疊TreeNode
。我不想要這種烘焙行爲。如何禁用WPF TreeView中的雙擊行爲?
有沒有辦法可以禁用它?
你可以抑制樹型視圖的雙擊事件,像這樣:
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;
}
}
我測試過這一點,我多少次點擊
它的作品無論剛剛嘗試,但它仍然做到了。我寫了'PreviewMouseDoubleClick'而不是'TreeViewItem.PreviewMouseDoubleClick',這有什麼關係嗎? – 2011-05-17 22:55:26
我給出的例子都是有效的。也許你可以發佈你的代碼,也許有什麼干擾? – 2011-05-17 23:09:21
謝謝,讓我在一個新項目中嘗試一下,然後確定。 – 2011-05-17 23:16:31
相關問題在這裏:http://stackoverflow.com/questions/6037042/disable-doubleclicks/6037293#6037293 – Matt 2011-05-17 23:43:14