问题描述
我的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
我提到了这个现有的问题WPF TreeView Style with Seperator,但是当我实现时,我发现分隔符被拉伸得很长,并且在不需要的每个级别之后都添加了分隔符。
这是我的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,1,1"
Height="1"
Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
DockPanel.Dock="Bottom">
<Border.BorderBrush>
<DrawingBrush Viewport="0,8,8" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Silver">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,50,50" />
<RectangleGeometry Rect="50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Border.BorderBrush>
</Border>
<TextBlock Text="{Binding CountryType}" />
</DockPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>