我在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
事件,因爲這是在實際構建Grid/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;
爲什麼是你的風格設置`HeaderStringFormat`爲`Colors.Red `? – Rachel 2011-12-15 15:25:28
我當時只是試圖突出顯示文本,這將是可以接受的,但我寧願突出顯示整個「標題」單元格。這不起作用,但它仍然運行,並沒有給出任何WPF例外。 – 2011-12-15 15:48:03