如何以编程方式更改WPF中的数据网格行颜色?

时间:2011-02-17 14:40:15

标签: c# wpf xaml datagrid background-color

我想知道这是否可能。我有这个datagrid包含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 version{get; set;}
    public string valid{get; 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 个答案:

答案 0 :(得分:3)

你的rowColor不应该返回一个字符串(我将它重命名为RowColor,因为它是公共的),只需返回实际的颜色画笔。 (顺便说一句,你的颜色是错的,第一种是不透明的黑色,第二种是透明的蓝色)

e.g。

public Brush rowColor { get; set; }
data1.rowColor = Brushes.Red;
data2.rowColor = Brushes.Blue;

如果你真的需要从字符串解析,你可以使用value converter或解析Xaml时使用的标准转换。

除此之外,我不确定将这些属性绑定到列的Foreground是否有效。