Я бы позволил представлению обрабатывать отображение метки.На мой взгляд, я бы не использовал эту цветовую логику в ViewModel, поскольку она должна обрабатывать только бизнес-правила и тому подобное, и не беспокоиться о том, как отображаются элементы.
XAML:
<sdk:Label Content="{Binding NumericValue}" Foreground="{Binding NumericValue, Converter={StaticResource numToColor}}" />
Посмотреть модель:
private decimal _numValue = -1;
public decimal NumericValue
{
get { return _numValue; }
set
{
_numValue = value;
RaisePropertyChanged("NumericValue");
}
}
Конвертер
public class NumberToColorConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || !(value is decimal))
return new SolidColorBrush(Colors.Black);
var dValue = System.Convert.ToDecimal(value);
if (dValue < 0)
return new SolidColorBrush(Colors.Red);
else
return new SolidColorBrush(Colors.Green);
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}