列のサイズ変更、ソート方向インジケーターなど、他のデフォルトのヘッダー機能を無効にすることなく、DataGridのすべての列ヘッダーでテキストの折り返しを有効にしたいのですが。
これを行う方法はありますか?
または、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> ...
他のデフォルトのヘッダー機能を無効にせずに、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ヘッダーのテキストをcenterにしたい場合は、代わりに次のスタイルを使用してこれを行うことができます。
<Style TargetType="{x:Type primitives:DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
</Style>
それでも、WPFの記事を多く見てきましたが、これは、各DataGrid列にTextWrappingまたはHorizontalAlignmentを追加することによってのみ可能であることを示唆しています個別に :
<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>
追加した 

テキストを折り返すヘッダーテキストに。これは、ヘッダーテキストを何かにバインドする必要がない場合に便利です。
<DataGridTextColumn x:Name="cAccountNumber" Header="Account
 Number" Width="80" Binding="{Binding Path=AccountNumber}" />
列名を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>
列ヘッダーにグローバルStyle
を作成できます。マークアップの例がないと、構文はわかりませんが、次のようになります。
<Style TargetType="{x:Type dg:ColumnHeader}">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
Style
はキーなしであるため、すべての列ヘッダーに自動的に適用されます。また、スタイルはローカルに設定されたプロパティをオーバーライドしないため、既存のヘッダー機能が「無効」になりません。