当所有子项折叠或隐藏时,如何在分层数据模板中隐藏扩展器?

时间:2014-04-18 14:42:20

标签: c# wpf treeview collapse

我的树视图设置如下:

<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;节点下的可见性已设置为CollapsedHidden,扩展器仍然存在。

当项目下的每个孩子的可见度设置为隐藏或折叠时,有没有办法隐藏扩展器?

1 个答案:

答案 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"/>