带分隔符的 WPF TreeView 样式
WPF TreeView Style with Seperator
我正在设计自定义 TreeView 的样式,该控件模板当前是
<border>
<grid>
<button>
<label>
<ItemPresenter>
</grid>
</border>
所以它最终看起来像这样
+ level 1
- level 2
+ level 2.1
+ level 2.2
- level 2.3
level 2.3.1
+level 2.4
+ level 3
我需要在所有项目之间使用全长分隔符
+ level 1
-------------------
- level 2
-------------------
+ level 2.1
-------------------
+ level 2.2
-------------------
- level 2.3
-------------------
level 2.3.1
-------------------
+level 2.4
-------------------
+ level 3
-------------------
现在,如果我设置边框,那么底部厚度为 1,我得到
+ level 1
-------------------
- level 2
+ level 2.1
----------------
+ level 2.2
----------------
- level 2.3
level 2.3.1
------------
----------------
+level 2.4
----------------
-------------------
+ level 3
-------------------
谁能帮我找到在每一项之间划一行的最佳方法?
由于您没有 post 整个模板,我使用默认模板作为参考。
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
....
<ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"/>
<Border Name="Bd" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" />
//Add code below
<Path Margin="-1000,0,0,0" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Bottom" Stretch="Fill" StrokeThickness="1" StrokeStartLineCap="Square" StrokeEndLineCap="Square" Stroke="Blue" Data="M 0 0 H 1" />
</Grid>
可以在此处找到 TreeViewItem 的默认模板https://msdn.microsoft.com/en-us/library/ms788727(v=vs.90).aspx
我正在设计自定义 TreeView 的样式,该控件模板当前是
<border>
<grid>
<button>
<label>
<ItemPresenter>
</grid>
</border>
所以它最终看起来像这样
+ level 1
- level 2
+ level 2.1
+ level 2.2
- level 2.3
level 2.3.1
+level 2.4
+ level 3
我需要在所有项目之间使用全长分隔符
+ level 1
-------------------
- level 2
-------------------
+ level 2.1
-------------------
+ level 2.2
-------------------
- level 2.3
-------------------
level 2.3.1
-------------------
+level 2.4
-------------------
+ level 3
-------------------
现在,如果我设置边框,那么底部厚度为 1,我得到
+ level 1
-------------------
- level 2
+ level 2.1
----------------
+ level 2.2
----------------
- level 2.3
level 2.3.1
------------
----------------
+level 2.4
----------------
-------------------
+ level 3
-------------------
谁能帮我找到在每一项之间划一行的最佳方法?
由于您没有 post 整个模板,我使用默认模板作为参考。
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
....
<ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"/>
<Border Name="Bd" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" />
//Add code below
<Path Margin="-1000,0,0,0" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Bottom" Stretch="Fill" StrokeThickness="1" StrokeStartLineCap="Square" StrokeEndLineCap="Square" Stroke="Blue" Data="M 0 0 H 1" />
</Grid>
可以在此处找到 TreeViewItem 的默认模板https://msdn.microsoft.com/en-us/library/ms788727(v=vs.90).aspx