你好,
首先,我想提到的是我的第一篇文章,所以我要求理解。
我有一个数据网格(WPF),我想根据其包含的值用颜色填充其单元格。我通过设置像这样的项目源来动态填充我的数据网格(列和行)
myDataGrid.ItemsSource = myDataTable.DefaultView;
所以我无法在设置项源之前在xaml中设置列样式。
我尝试了几种方法,例如:
1.)要获取单个单元格并设置其背景属性,例如>>this<<,
但是presenter.ItemContainerGenerator.ContainerFromIndex()
总是返回null(我不知道该如何解决)
2。)创建一个xaml单元格样式并转换为这样
VIEW
<DataGrid CellStyle="{StaticResource MyDataGridCell}"/>
样式
<Style x:Key="MyDataGridCell" TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{Binding Converter={StaticResource CellColorConverter}"/>
</Style>
转换器
public class CellColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is DataGridCell)
{
string text = (value as DataGridCell).Content.ToString();
int input = string.IsNullOrEmpty(text) ? 0 : System.Convert.ToInt32(text);
if (input >= 0)
{
return Brushes.Green;
}
if (input < 0)
{
return Brushes.Red;
}
}
return Brushes.Gray;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
但是value.Content
始终为null,而且我不知道如何将DataGridCell文本传递给转换器。
最后,网格应该看起来像that