WPF DataGrid - как установить заголовки столбцов для вертикального текста?

Ну, на самом деле я повернул на 90 градусов от горизонтали. Мне нужно сделать это, потому что текст для заголовка довольно длинный, но значение ячейки короткое, и я хочу разместить на экране много столбцов. Можно ли сделать это легко или мне нужно сначала изучить ресурсы и шаблоны? Я не против "взломать" решение!

2 ответа

Решение

Это будет вращать весь ColumnHeaderCell:

<DataGrid.ColumnHeaderStyle>
    <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="LayoutTransform">
            <Setter.Value>
                <RotateTransform Angle="270" />
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.ColumnHeaderStyle>

Знать: это значит HorizontalContentAlignment тогда VerticalContentAlignment и наоборот.

Вот еще один способ сделать это:

    <Style x:Key="soDataGrid_ColumnHeaderRotateStyle" TargetType="DataGridColumnHeader" >
    <Setter Property="ContentTemplate" >
        <Setter.Value>
            <DataTemplate>
                <TextBlock TextWrapping="Wrap" Text="{Binding}"
                           FontWeight="Bold" Width="60"
                           VerticalAlignment="Center" TextAlignment="Center"
                           HorizontalAlignment="Center">
                    <TextBlock.LayoutTransform>
                        <RotateTransform Angle="270" />
                    </TextBlock.LayoutTransform>
                </TextBlock>
            </DataTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>

Вы можете использовать стиль следующим образом

<DataGridComboBoxColumn Header="Portrait / &#x0a;Landscape" Width="42"
     HeaderStyle="{StaticResource soDataGrid_ColumnHeaderRotateStyle}"
     SelectedItemBinding="{Binding Orientation}"  
     ItemsSource="{Binding Mode=OneWay, 
     Source={StaticResource languageEnum}}" />

Я считаю, что этот подход дает вам много контроля. Полезно использовать код разрыва строки в длинном тексте заголовка.

К сожалению, я обнаружил, что вам нужно жестко указать ширину повернутого текстового блока - возможно, есть лучший способ установить эту ширину на основе содержимого текста.

Другие вопросы по тегам