Sie benutzerdefinierten Konverter verwenden könnte das zu erreichen. Wenn Ihr Artikel so aussieht:
public class Animal
{
public int Weight { get; set; }
public string Name { get; set; }
}
und ItemTemplate wie folgt aus:
<DataTemplate x:Key="AnimalTemplate">
<TextBlock Text="{Binding Name}" Foreground="{Binding Weight, Converter={StaticResource AnimalColorSelector}}"/>
</DataTemplate>
Ihr Konverter wie die folgenden sein:
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();
}
}
Dieser Ansatz folgende Profis hat:
- Sie müssen die defa nicht fest codieren ult Farbe, aber erben Sie es mit
Binding.DoNothing
.
- Sie müssen keine Stilinformationen in einem Ansichtsmodell speichern.
Vielen Dank. Es klappt! – BojanSM