[英]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>
用戶可以在樹視圖中隱藏項目。 但是,當節點下所有項目的可見性設置為Collapsed
或Hidden
,擴展器將保留。
當每個孩子在某個項目下的可見性設置為隱藏或折疊時,有什么方法可以隱藏擴展器?
我正在面對這個問題,並且遇到了這個問題。 我看到有一些答案需要在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.