Вы можете использовать собственный конвертер для достижения этой цели. Если ваш товар выглядит так:
public class Animal
{
public int Weight { get; set; }
public string Name { get; set; }
}
и ItemTemplate так:
<DataTemplate x:Key="AnimalTemplate">
<TextBlock Text="{Binding Name}" Foreground="{Binding Weight, Converter={StaticResource AnimalColorSelector}}"/>
</DataTemplate>
Ваш конвертер будет похож на следующий:
public class AnimalColorSelector : IValueConverter
{
private readonly Color _overweightColor = Colors.Red;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is int)
{
return (int) value > 300 ? new SolidColorBrush(_overweightColor) : Binding.DoNothing;
}
return Binding.DoNothing;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
У этого подхода есть следующие плюсы:
- Вам не нужно жестко задавать цвет по умолчанию, но наследовать его с помощью
Binding.DoNothing
.
- Вам не нужно хранить информацию о стиле в модели представления.