【发布时间】:2019-02-20 02:40:47
【问题描述】:
我想为树视图实现网格布局,其中最右边的列具有 *-size,最左边的列始终具有大小。
Xaml
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type model:BaustelleModel}" ItemsSource="{Binding Abschnitte}">
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderThickness="0 0 1 0" BorderBrush="Black">
<Label Content="{Binding Bezeichnung}"/>
</Border>
<Label Grid.Column="1" Background="Red"/>
<Label Grid.Column="2" Background="Green"/>
<Label Grid.Column="3" Background="AliceBlue"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
结果如图所示。但是,我想为每个节点绘制一个边框,比如蓝线。如果添加了新节点或更改了文本,则所有节点的边框应与节点的边框对齐,文本在最右侧结束。
更新 1
所以,我摆弄了一下ControlTemplate。问题是,ContentPresenter 以基于其级别的缩进开始。在下图中,ContentPresenter 的背景设置为红色。所以我需要一种方法,从列宽中减去“级别 * 缩进空间”。
【问题讨论】: