Хорошо, было нелегко найти решение, для простой вещи это определенно сложный способ сделать это.
Итак, для столбца я хочу установить «стиль», создав стиль типа типа ячейки, как этот.
var cellStyle = new Style()
{
TargetType = typeof(DataGridCell)
};
хитрость заключается в том, чтобы добавить установщик для свойства, которое вы хотите, с привязкой в качестве значения, и эта привязка имеет преобразователь, подобный этому.В этом случае я хочу изменить цвет шрифта с помощью DataGridCell.ForegroundProperty.
cellStyle.Setters.Add(new Setter(DataGridCell.ForegroundProperty, new Binding() { Converter = new CodeStyleConverter() }));
dataGrid.Columns[dataGrid.Columns.Count - 1].CellStyle = cellStyle;
Преобразователь - это объект, который является IValueConverter, который получает значение и возвращает объект для свойства, подобного этому.
public class CodeStyleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DataGridRow row;
if (value is DataGridRow)
{
row = value as DataGridRow;
if (row.Code == "I")
{
return Brushes.Red;
}
else if (row.Code == "E")
{
return Brushes.Blue;
}
}
return Brushes.Black;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}