代码之家  ›  专栏  ›  技术社区  ›  DotNetSpartan

仅在wpf中的顶级项目后向TreeView添加分隔符

  •  0
  • DotNetSpartan  · 技术社区  · 6 年前

    我的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>
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   mm8    6 年前

    您可以在您的 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>