带分隔符的 WPF TreeView 样式 [英] WPF TreeView Style with Seperator
问题描述
我正在设计一个自定义 TreeView 的样式,该控件模板当前是
I'm styling a custom TreeView that's control template is currently
<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
我需要所有项目之间的全长分隔符
I need a full length seperator between all the items
+ level 1
-------------------
- level 2
-------------------
+ level 2.1
-------------------
+ level 2.2
-------------------
- level 2.3
-------------------
level 2.3.1
-------------------
+level 2.4
-------------------
+ level 3
-------------------
现在,如果我将边框设置为底部厚度为 1,我会得到
Right now, if I set the border so it's on that the bottom thickness is 1 i get
+ level 1
-------------------
- level 2
+ level 2.1
----------------
+ level 2.2
----------------
- level 2.3
level 2.3.1
------------
----------------
+level 2.4
----------------
-------------------
+ level 3
-------------------
有人可以帮助我以最佳方式在每个项目之间放置一行吗?
Can someone help me with the best way to put a single line between each item?
推荐答案
由于您没有发布整个模板,我使用默认模板作为参考.
Since you didn't post your entire template, I'm using the default template as reference.
<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
The default template for TreeViewItem can be found here at https://msdn.microsoft.com/en-us/library/ms788727(v=vs.90).aspx
这篇关于带分隔符的 WPF TreeView 样式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!