嗨,我正在寻找一种方法来对齐我的树视图中的按钮,以便它看起来像在同一列中,即使它在任何级别.例如:
Item1 [Button]
Item2 [Button]
Item3[Button]
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像
Item1 [Button]
Item2 [Button]
Item3 [Button]
Run Code Online (Sandbox Code Playgroud)
我能做到这一点的任何方式..?
首先,看一下TreeViewItems上的这篇博客文章水平拉伸.TreeViewItem的默认ControlTemplate不允许标题内容延伸,您需要它来执行.使用作者推荐的TreeViewItem样式,但更改
<Setter Property="HorizontalContentAlignment" Value="Center" />
Run Code Online (Sandbox Code Playgroud)
至
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
Run Code Online (Sandbox Code Playgroud)
现在,您将拥有一个TreeViewItem,其中标题内容在TreeViewItem的整个宽度上延伸.要使用文本和按钮呈现TreeViewItem,请使用TreeView的ItemTemplate属性.如果您只想让按钮右对齐,可以使用DockPanel:
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ...}">
<DockPanel LastChildFill="False">
<TextBlock DockPanel.Dock="Left" Text="{Binding ...}"/>
<Button DockPanel.Dock="Right" Content="{Binding ...}"/>
</DockPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
如果按钮的内容可能具有可变大小,并且您希望它们具有相同的宽度,请使用带有SharedSizeScope的网格.Grid.IsSharedSizeScope="True"在TreeView中设置然后在ItemTemplate中执行以下操作:
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ...}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition SharedSizeGroup="Buttons"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding ...}"/>
<Button Grid.Column="1" Content="{Binding ...}"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2979 次 |
| 最近记录: |