WPF - DataGrid列标题对齐

时间:2010-03-17 13:45:47

标签: wpf xaml layout datagrid wpfdatagrid

我正在使用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

3 个答案:

答案 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>