在运行时更改WPF数据网格的整个列的背景颜色
本文关键字:颜色 背景 网格 数据网 运行时 WPF 数据 | 更新日期: 2023-09-27 18:05:54
大家好,我对WPF比较陌生。我已经搜索了这个问题的答案,但我所发现的是如何在运行时做彩色行而不是列;例如以下问题:
-
更改WPF数据网格行颜色
-
如何在WPF中以编程方式更改数据网格行颜色?
-
以编程方式为DataGrid中的行分配颜色
-
根据值更改DataGrid单元格颜色
等。
我在MSDN DataGrid页面上看到了CellStyle
属性,但它的使用对我来说并不明显,尽管围绕它进行了搜索。
如何在运行时改变整个列的背景颜色?
感谢您的宝贵时间。
我让它工作的唯一方法是通过自己设置列,(不使用AutoGenerate)。首先要做的是定义列:
<DataGrid x:Name="Frid" ItemsSource="{Binding Path=.}">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name"
Binding="{Binding Path=FirstName}">
</DataGridTextColumn>
<DataGridTextColumn Header="Last Name"
Binding="{Binding Path=LastName}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
然后你需要设置每个列的CellStyle,并将后台绑定到一个静态资源,你可以在窗口声明。资源:
<Window x:Class="WpfApplication1.MainWindow" ...>
<Window.Resources>
<SolidColorBrush x:Key="clBr" Color="White" />
</Window.Resources>
...
列:
<DataGridTextColumn Header="First Name"
Binding="{Binding Path=FirstName}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Background"
Value="{StaticResource clBr}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
则可以通过代码或xaml操作来操作静态资源。
希望能有所帮助。
有点老了,但这里是如何通过编程实现的(对于AutoGen列):
private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.CellStyle = new Style(typeof(DataGridCell));
e.Column.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty, new SolidColorBrush(Colors.LightBlue)));
}
同样的方法也可以应用于非autogen列。