在我的数据网格中,我有代表不同颜色的行。 以RGB格式。
我基本上要做的是将每一行的颜色设置为该项目代表的颜色。
所以我想遍历行并根据它所容纳的项目设置颜色。
我的模型如下:
public class ColorModel : INotifyPropertyChanged
{
private int _GreenValue;
private int _RedValue;
private int _BlueValue;
public int GreenValue
{
get { return _GreenValue; }
set
{
if (_GreenValue != value)
{
_GreenValue = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("GreenValue"));
}
}
}
}
public int RedValue
{
get { return _RedValue; }
set
{
if (_RedValue != value)
{
_RedValue = value;
PropertyChanged(this, new PropertyChangedEventArgs("RedValue"));
}
}
}
public int BlueValue
{
get { return _BlueValue; }
set
{
if (_BlueValue != value)
{
_BlueValue = value;
PropertyChanged(this, new PropertyChangedEventArgs("BlueValue"));
}
}
}
public SolidColorBrush GetColor()
{
Color res = new Color();
res = Color.FromRgb(Convert.ToByte(RedValue), Convert.ToByte(GreenValue), Convert.ToByte(BlueValue));
var result = new SolidColorBrush(res);
return result;
}
public event PropertyChangedEventHandler PropertyChanged;
}
我有一个load方法,将数据初始化到网格。
private void Load()
{
var colorList = _Context.ColorMix.ToList();
foreach (var item in colorList)
{
var res = Color.FromRgb(Convert.ToByte(item.RedValue), Convert.ToByte(item.GreenValue), Convert.ToByte(item.BlueValue));
var result = new SolidColorBrush(res);
var dr = new DataGridRow();
dr.Item = item;
dr.Background = result;
myColorGrid.Items.Add(dr);
}
dataGrid = myColorGrid;
}
问题是该项目没有显示。只有颜色。 因此它变得像具有不同颜色的条纹。 我还需要显示该项目:P
答案 0 :(得分:1)
将Brush
属性添加到您的ColorModel
:
public Brush Brush => GetColor();
将ItemsSource
中的DataGrid
设置为colorList
:
private void Load()
{
myColorGrid.ItemsSource = _Context.ColorMix.ToList();
dataGrid = myColorGrid;
}
并使用ItemContainerStyle
将行的Background
属性绑定到Brush
的{{1}}属性:
ColorModel