私はこれを行う方法はありますなどすべての列ヘッダーでテキストの折り返しを有効にするにはどうすればよいですか?
列のサイズ変更、ソート方向指示器、など、他のデフォルトのヘッダーの機能を無効にすることなく、私のデータグリッドのすべての列ヘッダーのテキストの折り返しを有効にしたいですか?
私はこれを行う方法はありますなどすべての列ヘッダーでテキストの折り返しを有効にするにはどうすればよいですか?
列のサイズ変更、ソート方向指示器、など、他のデフォルトのヘッダーの機能を無効にすることなく、私のデータグリッドのすべての列ヘッダーのテキストの折り返しを有効にしたいですか?
カラムヘッダーにグローバルStyle
を作成することができます。任意の例のマークアップがなければ、私は構文を知らないが、それは次のようになります。
<Style TargetType="{x:Type dg:ColumnHeader}">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
Style
がキーレスなので、それは自動的に列ヘッダーのすべてに適用されます。スタイルはローカルに設定されたプロパティをオーバーライドしないので、既存のヘッダー機能を無効にしません。
列名を直接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>
私は、
あなたが追加する必要があり、他のデフォルト ヘッダの機能を無効にすることなく、テキストは私のデータグリッドのすべての列ヘッダーに を包む有効にしたいと思います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>
うわー、あなたは1時間前の質問に良い答えを出しました。 +1 – Quartermeister
なぜか分かりませんが、すべてのコードを試しましたが、テキストを中央に配置しませんでしたか? – Elisabeth
ファナティックなソリューション。ちょうどFYI、私はResourceDictionaryで定義された既存のColumnHeaderStyleを持っていて、Setter Property-Setterブロックを単純に貼り付けました。それは魅力的に機能し、プリミティブやWPF Toolkitへの参照を必要とせずに、そのスタイルを持つすべてのデータグリッドの外観を変更しました。 – SQLServerSteve
または、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> ...
これは受け入れられた回答よりもはるかに良い解決策です! – Kevek
私はテキストを折り返すするヘッダーテキストに

を追加しました。これは、ヘッダーテキストを何かにバインドする必要がないときに便利です。
<DataGridTextColumn x:Name="cAccountNumber" Header="Account
 Number" Width="80" Binding="{Binding Path=AccountNumber}" />
私の提案に感謝しますが、私はこのアプローチを働かせることができませんでした。しかし、DataGridColumn.Headerプロパティに文字列を代入するのではなく、文字列を含むTextBlockを作成し、テキストブロックのTextWrappingプロパティを "Wrap"に設定すると、私が望む結果を得ることができました。 –
ヘッダーの内容をラップするのはどうですか? –