簡體   English   中英

如何在 WPF TreeView 中禁用雙擊行為?

[英]How to disable double click behaviour in a WPF TreeView?

在我的TreeView ,我有不同的MouseDown / MouseUp事件,但是當我做得足夠快時, TreeView會展開/折疊TreeNode 我不想要這種老生常談的行為。

有沒有辦法禁用它?

您可以像這樣抑制 TreeViewItem 的雙擊事件:

xml:

<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;
}

更新

根據 msdn 文檔

雖然這個路由事件似乎是沿着一個元素樹的隧道路由,但它實際上是一個直接路由事件,由每個 UIElement 沿着元素樹引發......想要處理鼠標雙擊的控件作者應該在以下情況下使用 PreviewMouseLeftButtonDown 事件ClickCount 等於 2。 這將導致 Handled 的狀態在元素樹中的另一個元素處理事件的情況下適當地傳播。

我不確定這是否是您遇到問題的原因,但我們會按照 MSDN 的方式進行操作,並改用PreviewMouseLeftButtonDown

xml:

<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;
    }
}

我已經測試過這個,無論我點擊多少次它都有效

如果您想防止在 DoubleClick 上展開/折疊 TreeView,但同時對此事件使用命令,則可以使用以下解決方案:

https://stackoverflow.com/a/60869105/1206431

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM