仅在 wpf 中的顶级项目之后向 TreeView 添加分隔符
Adding separators to a TreeView only after top level items in wpf
我的 TreeView 最终看起来像这样。
+ level 1
- level 2
+ level 2.1
+ level 2.2
+ level 3
我的要求是仅在顶级项目之后显示分隔符,如下所示:
+ level 1
----------
- level 2
+ level 2.1
+ level 2.2
-----------
+ level 3
我提到了这个现有问题 ,但是当我实施时,我发现分隔符看起来非常拉伸并且在我不想要的每个级别之后添加。
这是我的 TreeView 代码:
<TreeView ItemsSource="{Binding PersonViewModelList}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Persons}" DataType="{x:Type local:PersonViewModel}">
<TextBlock Text="{Binding CountryType}" FontWeight="Bold"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
您可以在 HierarchicalDataTemplate
中添加分隔符元素,例如:
<TreeView ItemsSource="{Binding PersonViewModelList}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Names}" DataType="{x:Type local:PersonViewModel}">
<DockPanel>
<Border BorderThickness="1,0,1,1"
Height="1"
Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
DockPanel.Dock="Bottom">
<Border.BorderBrush>
<DrawingBrush Viewport="0,0,8,8" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Silver">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,50,50" />
<RectangleGeometry Rect="50,50,50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Border.BorderBrush>
</Border>
<TextBlock Text="{Binding CountryType}" />
</DockPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我的 TreeView 最终看起来像这样。
+ level 1
- level 2
+ level 2.1
+ level 2.2
+ level 3
我的要求是仅在顶级项目之后显示分隔符,如下所示:
+ level 1
----------
- level 2
+ level 2.1
+ level 2.2
-----------
+ level 3
我提到了这个现有问题
这是我的 TreeView 代码:
<TreeView ItemsSource="{Binding PersonViewModelList}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Persons}" DataType="{x:Type local:PersonViewModel}">
<TextBlock Text="{Binding CountryType}" FontWeight="Bold"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
您可以在 HierarchicalDataTemplate
中添加分隔符元素,例如:
<TreeView ItemsSource="{Binding PersonViewModelList}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Names}" DataType="{x:Type local:PersonViewModel}">
<DockPanel>
<Border BorderThickness="1,0,1,1"
Height="1"
Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
DockPanel.Dock="Bottom">
<Border.BorderBrush>
<DrawingBrush Viewport="0,0,8,8" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Silver">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0,50,50" />
<RectangleGeometry Rect="50,50,50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Border.BorderBrush>
</Border>
<TextBlock Text="{Binding CountryType}" />
</DockPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>