0

我正在尝试使TreeViewNode我的 WinUI的根TreeView充当其可选子节点的不可选择的“文件夹”。但是,该SelectionMode属性仅适用于 的整个TreeView实例而不是单独的实例TreeViewNode

如何禁用单个节点的选择,同时仍保持它为展开/折叠功能启用?

4

1 回答 1

1

如何禁用单个节点的选择,同时仍保持它为展开/折叠功能启用?

如果我们只是简单地将节点的IsEnabled属性设置为 false,它可能适合您的场景,但它也会禁用展开/折叠功能。所以我们需要独立实现展开/折叠功能。我们可以将TreeViewItem IsExpanded属性与布尔值绑定,并使用它来展开/折叠节点。

<DataTemplate x:Key="FolderTemplate" x:DataType="local:ExplorerItem">
    <TreeViewItem
        AutomationProperties.Name="{x:Bind Name}"
        IsEnabled="False"
        IsExpanded="{Binding ElementName=MyTreeView, Path=DataContext.IsOpen, Mode=OneWay}"
        IsSelected="{x:Bind IsSelected, Mode=TwoWay}"
        ItemsSource="{x:Bind Children}">
        <StackPanel Orientation="Horizontal">
            <Image Width="20" Source="../Assets/folder.png" />
            <TextBlock Margin="0,0,10,0" />
            <TextBlock Text="{x:Bind Name}" />
        </StackPanel>
    </TreeViewItem>
</DataTemplate>

后面的代码

private bool _isOpen;
public bool IsOpen
{
    get
    {
        return _isOpen;
    }

    set
    {
        _isOpen = value;
        NotifyPropertyChanged("IsOpen");
    }

}

用法

 IsOpen = true;
于 2021-04-12T03:25:21.350 回答