3

ええと、実際には水平から -90 度回転したということです。

ヘッダーのテキストは非常に長いのにセルの値が短いため、これを行う必要があり、画面に多くの列を収めたいと考えています。

これは簡単に実行できますか?それとも、最初にリソースとテンプレートについて学習する必要がありますか? 「ハック」ソリューションは気にしません!

4

2 に答える 2

17

これにより、ColumnHeaderCell 全体が回転します。

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

注意: この意味HorizontalContentAlignmentは aVerticalContentAlignmentであり、その逆もあります。

于 2012-04-21T09:41:02.990 に答える
4

これを行う別の方法を次に示します。

    <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}}" />

このアプローチにより、多くの制御が可能になることがわかりました。長いヘッダー テキストでは改行コードを使用すると便利です。

残念ながら、回転したテキストブロックの幅をハードコーディングする必要があることがわかりました。テキストの内容に基づいてこの幅を設定するより良い方法があるかもしれません。

于 2012-11-07T21:18:52.120 に答える