如何以编程方式更改 WPF 中的数据网格行颜色?
Posted
技术标签:
【中文标题】如何以编程方式更改 WPF 中的数据网格行颜色?【英文标题】:How do I programatically change datagrid row color in WPF? 【发布时间】:2011-06-29 03:47:29 【问题描述】:我想知道这是否可能。我有这个数据网格包含 3 列和 2 行。我想要的是根据我输入的数据更改我的数据网格上 URL 列的背景。
这是我的 xaml 代码示例:
<DataGrid
x:Name="mylistview"
BorderBrush="#FF373737"
Background="Black"
VerticalGridLinesBrush="#FF232323"
HorizontalGridLinesBrush="#FF212121">
<DataGrid.Columns>
<DataGridTextColumn Header="URL" Foreground="Binding rowColor" Binding="Binding url"/>
<DataGridTextColumn Header="Version" Foreground="White" Binding="Binding version"/>
<DataGridTextColumn Header="Valid" Foreground="White" Binding="Binding valid"/>
</DataGrid.Columns>
</DataGrid>
我的班级过去常常用行填充数据网格:
public class myData
public string url get; set;
public string versionget; set;
public string validget; set;
//this should be the value that changes the bg color
public string rowColor get; set;
这是我向控件添加行的方法:
myData data1 = new myData();
data1.url = "http://google.com";
data1.valid = "yes";
data1.version = "1";
data1.rowColor = "#FF000000";
this.mylistview.Items.Add(data1);
data1.url = "http://yahoo.com";
data1.valid = "no";
data1.version = "1";
data1.rowColor = "#000000FF";
this.mylistview.Items.Add(data1);
我有两个元素。每行都应该有自己的颜色。第一个应该是红色的 第二个应该是蓝色的。我真的不知道如何让控件使用 rowColor 值。
我需要做什么才能让它工作?
【问题讨论】:
【参考方案1】:您的rowColor
不应返回字符串(我会将其重命名为RowColor
,因为它是公开的),而是返回实际的颜色画笔。 (顺便说一下你的颜色不对,第一个是不透明的黑色,第二个是透明的蓝色)
例如
public Brush rowColor get; set;
data1.rowColor = Brushes.Red;
data2.rowColor = Brushes.Blue;
如果您确实需要从字符串解析,您可以使用 value converter 或解析 Xaml 时使用的标准转换。
此外,我不确定将这些属性绑定到列的Foreground
是否有效。
【讨论】:
以上是关于如何以编程方式更改 WPF 中的数据网格行颜色?的主要内容,如果未能解决你的问题,请参考以下文章