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