【发布时间】:2011-12-15 15:12:24
【问题描述】:
我在 WPF 项目窗口中有一个 WPF DataGrid。我已经用DataTable 填充了网格,并自动生成了列(不幸的是,这是必需的),并且需要根据某些其他因素更改列的标题颜色。
我有一个需要突出显示的列名列表,并且可以根据此轻松找出它们的索引(因为我自己在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;
【问题讨论】:
-
为什么你的风格将
HeaderStringFormat设置为Colors.Red? -
我只是想突出显示文本,这是可以接受的,但我宁愿突出显示整个“标题”单元格。这不起作用,但它仍然运行并且没有给出任何 WPF 异常。
-
我只是好奇,因为
HeaderStringFormat通常类似于"M/d/yy"或"#,##0.00",而不是颜色。 -
哈哈......我显然在那里失败了。是的,你是对的,我在玩 HeaderCellStyle 或类似的东西,看到了这个,只是交换了属性以防它工作。