WPFプロジェクトウィンドウにWPF DataGrid
があります。私はグリッドにDataTable
を設定し、列を自動生成しました(残念なことに必要性)、他の特定の要因に応じて列のヘッダーカラーを変更する必要があります。実行時に自動生成された列を含むWPFデータグリッドの列ヘッダーの色を変更します。
私は、強調表示が必要な列名のリストを持っており、これに基づいてインデックスを簡単に把握することができます(DataGrid
でそれらを生成しました)。
しかし、私は列のヘッダーが色を変えるように見えることはできません。設計時にどの列が強調表示されているのかわからないので、コード内でこれを行う必要があります。ヘッダーにはすでにテンプレートがあります...もし私がやろうとしていることを "上書き"しているかどうかは分かりません。
グリッド:
<DataGrid FrozenColumnCount="1" AutoGenerateColumns="True" Grid.Row="1"
AlternationCount="2" HeadersVisibility="Column" Name="dgSkillsMatrix"
Margin="0,0,2,1" HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White"
AlternatingRowBackground="#FFD0D0EB" RowBackground="#FFECECF5" FontSize="10.5"
Grid.ColumnSpan="1" CellStyle="{StaticResource CellHighlighterStyle}"
ColumnHeaderStyle="{StaticResource dataGridColumnHeader}" />
ヘッダーテンプレート/スタイル:
<DataTemplate x:Key="RotateHeaderTemplate" >
<TextBlock Text="{Binding}" Foreground="Blue" >
<TextBlock.LayoutTransform>
<RotateTransform Angle="-90" />
</TextBlock.LayoutTransform>
</TextBlock>
</DataTemplate>
そしてこれはつまりとして、私はWindow_Activated
イベントで呼び出される(変更するには、列のヘッダーを取得するには、これまでにしようとしたものですグリッド/ WPFのツリーが実際に構築されたときに、コンストラクタの後に呼ばれる):
Style newStyle = new System.Windows.Style()
{
TargetType = typeof(DataGridColumn)
};
// SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#F70F49"))
newStyle.Setters.Add(new Setter(DataGridColumn.HeaderStringFormatProperty, new SolidColorBrush(Colors.Red)));
this.dgSkillsMatrix.Columns[4].HeaderStyle = newStyle;
なぜ、あなたのスタイルは 'Colors.Redに' HeaderStringFormat'を設定しているが'? – Rachel
私はただテキストを強調表示しようとしていましたが、それは受け入れられるでしょうが、ヘッダーセル全体を強調表示したいと思います。これは機能しませんでしたが、WPFの例外を何も実行していませんでした。 –
'HeaderStringFormat'は、通常、' 'M/d/yy" 'や' '#、## 0.00" 'のようなもので、色ではないので不思議でした。 – Rachel