如何解决使单个 TreeViewNode 不可选择
我正在尝试使我的 WinUI TreeViewNode
的根 TreeView
充当其可选子节点的不可选择“文件夹”。但是,SelectionMode
属性仅适用于整个 TreeView
,而不适用于 TreeViewNode
的单独实例。
如何禁用对单个节点的选择,同时仍为展开/折叠功能启用它?
解决方法
如何禁用对单个节点的选择,同时仍为展开/折叠功能启用它?
如果我们只是简单地将节点的 IsEnabled
属性设置为 false,它可能适合您的场景,但它也会禁用展开/折叠功能。所以我们需要独立实现展开/折叠功能。我们可以将 TreeViewItem
IsExpanded
属性与 bool 值绑定,并使用它来展开/折叠节点。
<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,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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。