带分隔符的 WPF TreeView 样式 [英] WPF TreeView Style with Seperator

查看:49
本文介绍了带分隔符的 WPF TreeView 样式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在设计一个自定义 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆