39

DataGrid他のデフォルトのヘッダー機能を無効にせずに、 のすべての列ヘッダーでテキストの折り返しを有効にするにはどうすればよいですか? 必要な列のサイズ変更、ソート方向インジケーターなど。

これを行う方法はありますか?

4

5 に答える 5

47

または、app.xamlファイルのプリミティブを気にせずに、次のことを実行します(私のオブジェクト)。

<DataGrid Name="WBdataGrid" AutoGenerateColumns="False" ColumnHeaderHeight="50" >
    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.ColumnHeaderStyle>
    <DataGrid.Columns> ...
于 2011-08-25T16:37:19.080 に答える
24

他のデフォルトのヘッダー機能を無効にすることなく、DataGrid のすべての列ヘッダーでテキストの折り返しを有効にしたいと考えています。

次の名前空間をapp.xamlファイルに追加する必要があります。

xmlns:primitives="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"

次に、このタグをapp.xamlに追加します。

<Style TargetType="{x:Type primitives:DataGridColumnHeader}">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

これにより、WPF アプリケーション全体のすべての DataGrid のヘッダーにテキスト ラッピングが追加されます。

この件に関しては、各 DataGrid ヘッダーのテキストを中央揃えにしたい場合は、代わりに次のスタイルを使用してこれを行うことができます。

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

それでも、各 DataGrid 列に個別に TextWrapping または Horizo​​ntalAlignment を追加することによってのみこれを行うことができることを示唆する非常に多くの WPF 記事を見てきました。

<toolkit:DataGridTextColumn Binding="{Binding Path=TaxAmount}">
    <toolkit:DataGridTextColumn.HeaderTemplate >
        <DataTemplate>
            <TextBlock Text="Tax Amount" Width="90" TextWrapping="Wrap" HorizontalAlignment="Center"/>
        </DataTemplate>
    </toolkit:DataGridTextColumn.HeaderTemplate>
</toolkit:DataGridTextColumn>
于 2010-07-14T13:22:02.310 に答える
15

&#x0a;テキストを折り返すヘッダーテキストに追加しました。これは、ヘッダー テキストを何かにバインドする必要がない場合に便利です。

<DataGridTextColumn x:Name="cAccountNumber" 
                    Header="Account&#x0a; Number" 
                    Width="80" 
                    Binding="{Binding Path=AccountNumber}" />
于 2015-07-01T06:05:09.943 に答える
10

列名を DataGridColumn.Header プロパティに直接割り当てる代わりに、列名を含む TextBlock を作成し、TextBlock の TextWrapping プロパティを "Wrap" に設定して、TextBlock を DataGridColumn.Header プロパティに割り当てました。これにより、デフォルトのヘッダー機能が保持されます。

例:

<toolkit:DataGridTextColumn Binding="{Binding Path=MyProperty}">
    <toolkit:DataGridTextColumn.Header>
        <TextBlock Text="Something Longer" TextWrapping="Wrap" />
    </toolkit:DataGridTextColumn.Header>
</toolkit:DataGridTextColumn>
于 2009-08-17T22:36:01.847 に答える
1

Style列ヘッダーのグローバルを作成できます。マークアップの例がないと構文はわかりませんが、次のようになります。

<Style TargetType="{x:Type dg:ColumnHeader}">
    <Setter Property="TextWrapping" Value="Wrap"/>
</Style>

はキーレスであるため、Styleすべての列ヘッダーに自動的に適用されます。また、スタイルはローカルに設定されたプロパティをオーバーライドしないため、既存のヘッダー機能を「無効にする」ことはありません。

于 2009-08-17T20:55:47.260 に答える