WPF DataGrid
を使用しています。他の列に影響を与えずに、単一の列ヘッダーの背景色を変更したいとします。単一のDataGrid列ヘッダーの背景色を変更する
私は、次の質問が見つかりました:、
How to change column header's background color when using WPF datagridを
が、これは、すべての列ヘッダーを変更します、と私は一つだけを変更したいです。
WPF DataGrid
を使用しています。他の列に影響を与えずに、単一の列ヘッダーの背景色を変更したいとします。単一のDataGrid列ヘッダーの背景色を変更する
私は、次の質問が見つかりました:、
How to change column header's background color when using WPF datagridを
が、これは、すべての列ヘッダーを変更します、と私は一つだけを変更したいです。
あなたはそのようなものを使用する場合:Style
はKey
を与えられていないので、あなたが、そのスコープ内のすべてColumnHeader
のためDataGridColumnHeader
Style
を変更している
<DataGrid>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="Blue" />
</Style>
</DataGrid.Resources>
</DataGrid>
。
は今、DataGrid
のItemsSource
がList<C>
、C
はA
とB
呼ばstring
プロパティを持つクラスであるであることをふりをします。これは、列A
の唯一Style
を設定するために何ができるかです:
<DataGrid>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}"
Key="SpecialHeaderStyle"> <!-- here I set the Style's Key -->
<Setter Property="Background" Value="Blue" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<!-- for this column I set the HeaderStyle property -->
<DataGridTextColumn Binding="{Binding A}"
Header="A"
HeaderStyle="{StaticResource SpecialHeaderStyle}"/>
<!-- for this column I don't -->
<DataGridTextColumn Binding="{Binding B}"
Header="B"/>
</DataGrid.Columns>
</DataGrid>
あなたが唯一の列A
に特別Style
を設定します。
このようにしてStyle
を変更すると、マウスを使って渡すと変更されない固定の背景色を設定していることに注意してください。応答性の高いヘッダーUIを作成するには、そのテンプレート全体をオーバーライドする必要があります。より広い議論のためにthisを読んでください。
私はデータグリッドにスタイルを適用して見栄えを良くするmaterialdesigninxamlを使用しています。 HeaderStyleを使用すると、materialdesigninxamlからすべてのスタイルを上書きするようです。 materialdesignxamlからスタイルを保持し、リソーススタイルの変更のみを適用する方法はありますか? –
@DavidLee [この質問に行く](http://stackoverflow.com/questions/19383347/overridesdefaultstyle-together-with-basedon-in-wpf)それはあなたを助けるかもしれない(しかし、私はわからない)。 –