我的树视图设置如下:
<TreeView ItemsSource="{Binding TreeRoot}" x:Name="HierarchyTreeView">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}>
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={...}}" />
...
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" ... />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
用户可以隐藏树视图中的项目。但是,当所有项目&#39;节点下的可见性已设置为Collapsed
或Hidden
,扩展器仍然存在。
当项目下的每个孩子的可见度设置为隐藏或折叠时,有没有办法隐藏扩展器?
答案 0 :(得分:1)
我遇到了这个问题并遇到了这个问题。我看到有一些答案你需要在treeview项目样式中进行此更改,这需要您编辑默认样式。 但是,与上面的情况一样,我也只是在隐藏节点项时才需要展开器。 一种简单的方法是默认扩展所有节点,并使用datatrigger中的属性为treeviewItem样式设置树视图项可见性。 这就是我实现它的方式。
<Style x:Key="myTreeItemtyle" TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsVisible}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsVisible}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
现在,将此样式用作树视图项容器样式:
<TreeView Name="treeView" ItemsSource="{Binding TreeItems}" ItemContainerStyle="{StaticResource myTreeItemtyle}" BorderThickness="0"/>