Вы делаете это с помощью стилей и DataTriggers. Просто установите свой ElementStyle с свойством фона по умолчанию, в данном случае Green, и добавьте DataTriggers для других случаев:
<DataGridTextColumn Binding="{Binding WhateverIWantToDisplay}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="Green" />
<Style.Triggers>
<DataTrigger Binding="{Binding Foo}" Value="1">
<Setter Property="Background" Value="Blue" />
</DataTrigger>
<DataTrigger Binding="{Binding Foo}" Value="2">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding Foo}" Value="2">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
Другой подход заключается в использовании привязки с конвертером:
<DataGridTextColumn Binding="{Binding WhateverIWantToDisplay}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background"
Value="{Binding Foo, Converter={x:Static my:FooToColorConverter.Instance}}" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
с этим конвертером:
public class FooToColorConverter : IValueConverter
{
public static readonly IValueConverter Instance = new FooToColorConverter();
public object Convert(object value, ...
{
int foo = (int)value;
return
foo==1 ? Brushes.Blue :
foo==2 ? Brushes.Red :
foo==3 ? Brushes.Yellow :
foo>3 ? Brushes.Green :
Brushes.Transparent; // For foo<1
}
public object ConvertBack(...
{
throw new NotImplementedException();
}
}
Обратите внимание, что ответ, который дал serge_gubenko, также будет работать, но только если значение вашего свойства Foo никогда не изменится. Это связано с тем, что метод получения свойства Color будет вызываться только один раз. Его решение можно улучшить, изменив Color на DependencyProperty, доступный только для чтения, и обновляя его всякий раз, когда назначается Foo, но в целом плохая идея иметь информацию о пользовательском интерфейсе, такую как цвета, в модели данных, поэтому это не рекомендуется. *