WPF - выравнивание заголовка столбца DataGrid - PullRequest
4 голосов
/ 17 марта 2010

Я использую элемент управления 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 ]

8 голосов
/ 17 марта 2010

ОК, нашел ответ.

Имущество, которое я искал, было VerticalContentAlignment .

Я создал стиль и прикрепил его с помощью свойства HeaderStyle, и это сработало:)

<Style x:Key="VerticalGridHeaderStyle" TargetType="tk:DataGridColumnHeader">
    <Setter Property="VerticalContentAlignment" Value="Bottom"/>
</Style>
2 голосов
/ 05 октября 2016

Это также работает

<Style TargetType="{x:Type DataGridColumnHeader}">
   <Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>

Добавьте x:Key="", если вы не хотите нацеливать все DataGridColumnHeader's

0 голосов
/ 20 августа 2018

Если вы не хотите испортить стиль, который вы уже применили, используйте BasedOn:

<DataGrid.ColumnHeaderStyle>
                <Style BasedOn="{StaticResource MetroDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                </Style>
            </DataGrid.ColumnHeaderStyle>
...