我想知道这是否可能。我有这个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值。
我需要做些什么来实现这个目标?
答案 0 :(得分:3)
你的rowColor
不应该返回一个字符串(我将它重命名为RowColor
,因为它是公共的),只需返回实际的颜色画笔。 (顺便说一句,你的颜色是错的,第一种是不透明的黑色,第二种是透明的蓝色)
e.g。
public Brush rowColor { get; set; }
data1.rowColor = Brushes.Red;
data2.rowColor = Brushes.Blue;
如果你真的需要从字符串解析,你可以使用value converter或解析Xaml时使用的标准转换。
除此之外,我不确定将这些属性绑定到列的Foreground
是否有效。