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


テキストを折り返すヘッダーテキストに追加しました。これは、ヘッダー テキストを何かにバインドする必要がない場合に便利です。
<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
すべての列ヘッダーに自動的に適用されます。また、スタイルはローカルに設定されたプロパティをオーバーライドしないため、既存のヘッダー機能を「無効にする」ことはありません。