簡體   English   中英

當所有子級都折疊或隱藏時,如何在分層數據模板中隱藏擴展器?

[英]How do I hide expander in Hierarchical Data Template when all children are collapsed or hidden?

我有一個樹視圖設置如下:

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

用戶可以在樹視圖中隱藏項目。 但是,當節點下所有項目的可見性設置為CollapsedHidden ,擴展器將保留。

當每個孩子在某個項目下的可見性設置為隱藏或折疊時,有什么方法可以隱藏擴展器?

我正在面對這個問題,並且遇到了這個問題。 我看到有一些答案需要在treeview項樣式中進行此更改,這需要您編輯默認樣式。 但是,像上面的情況一樣,當節點項被隱藏時,我也只需要擴展器不可見。 一種簡單的方法是默認情況下擴展所有節點,並在datatrigger中使用treeviewItem樣式的屬性來設置treeview項的可見性。 這就是我能夠實現它的方式。

<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項目容器樣式:

<TreeView Name="treeView" ItemsSource="{Binding TreeItems}" ItemContainerStyle="{StaticResource myTreeItemtyle}" BorderThickness="0"/>

暫無
暫無

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

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