我正在使用WPFToolkit DataGrid控件,我想重新设置一些列标题,以便标题文本垂直显示而不是水平显示(列中的数据都是数字,因此,不是很宽,但是标题文字很长)。 所以我创建了一个DataTemplate并尝试将DataGridColumn.HeaderTemplate添加到它。这是我的模板:
<DataTemplate x:Key="headerTemplate">
<StackPanel VerticalAlignment="Bottom" HorizontalAlignment="Left" Background="Aqua">
<StackPanel.LayoutTransform>
<RotateTransform Angle="-90"/>
</StackPanel.LayoutTransform>
<TextBlock Text="{Binding}" VerticalAlignment="Bottom" HorizontalAlignment="Left" Background="Pink">
</TextBlock>
</StackPanel>
</DataTemplate>
这很好用,除了标题的对齐总是左和中。 StackPanel或TextBlock的对齐组合似乎没有任何区别。我希望文本在底部和中间对齐。我该怎么做呢?
谢谢,
AT
答案 0 :(得分:8)
好的,找到了答案。
我正在寻找的属性是 VerticalContentAlignment 。
我使用HeaderStyle属性创建了一个样式并附加了它,并且它起作用了:)
<Style x:Key="VerticalGridHeaderStyle" TargetType="tk:DataGridColumnHeader">
<Setter Property="VerticalContentAlignment" Value="Bottom"/>
</Style>
答案 1 :(得分:2)
这也有效
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
如果您不想定位所有DataGridColumnHeader,请添加x:Key=""
答案 2 :(得分:0)
如果您不想弄乱已经应用的样式,请使用BasedOn:
<DataGrid.ColumnHeaderStyle>
<Style BasedOn="{StaticResource MetroDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGrid.ColumnHeaderStyle>