我在 WPF 中使用 Telerik TreeView,并且使用 HierarchicalDataTemplate 来显示节点。节点代表匹配的项目 - 可以是仅左、仅右、相等或不等(基于树的比较)。
我目前正在使用 DataTemplateSelector 从四个模板之一中进行选择,这些模板看起来都类似于以下内容:
<HierarchicalDataTemplate x:Key="EqualTreeItemTemplate" ItemsSource="{Binding}">
<Grid Name="rowGrid" HorizontalAlignment="Stretch" Height="Auto" d:DataContext="{d:DesignInstance Carbon:ICarbonComparisonPair }">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Path Data="F1M574.042,314.611L533.8,344.398 522.251,328.798 515.235,333.988 526.786,349.593 526.782,349.596 531.978,356.603 579.235,321.622 574.042,314.611z" Stretch="Uniform" Fill="#FF000000" Width="16" Height="16" VerticalAlignment="Center" Margin="0,0,0,0" />
<TextBlock Grid.Column="1" Text="{Binding ObjectName}" Style="{StaticResource ObjectNameStyle}" Margin="4,0,0,0" />
<TextBlock Grid.Column="2" Text="{Binding ObjectName}" Style="{StaticResource ObjectNameStyle}" Margin="4,0,0,0" />
</Grid>
</HierarchicalDataTemplate>
我遇到的问题是项目内容区域的宽度根据项目出现的树的级别而不同。这意味着我没有排列的列 - 右侧列中的文本移动对于您扩展的树的每个级别,向右一点。
我想做的是将右侧网格列的宽度指定为整个树控件大小的 50%,而不是网格自然区域的 50%。我想也许我可以通过与 RelativeSource 的绑定来做到这一点,但我似乎无法让它工作。有没有办法在 XAML 中实现这一点,还是我需要求助于代码隐藏?