【问题标题】:How do I programatically change datagrid row color in WPF?如何以编程方式更改 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 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 值。

我需要做什么才能让它工作?

【问题讨论】:

    标签: c# wpf xaml datagrid background-color


    【解决方案1】:

    您的rowColor 不应返回字符串(我会将其重命名为RowColor,因为它是公开的),而是返回实际的颜色画笔。 (顺便说一下你的颜色不对,第一个是不透明的黑色,第二个是透明的蓝色)

    例如

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多