MVVM Изменение переднего плана меток в зависимости от значения меток - PullRequest
4 голосов
/ 28 июня 2011

Содержимое моих ярлыков привязано к ВМ и на основе расчетов будет либо отрицательным, либо положительным. Если они положительные, я хочу, чтобы на переднем плане был определенный цвет и другой цвет, если они отрицательные. Должен ли я просто обрабатывать все это в виртуальной машине, привязывая передний план меток? Между прочим, всего 4 ярлыка.

Спасибо

Ответы [ 2 ]

5 голосов
/ 28 июня 2011

Я бы позволил представлению обрабатывать отображение метки.На мой взгляд, я бы не использовал эту цветовую логику в 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
}
2 голосов
/ 28 июня 2011

Я собираюсь предположить, что это Silverlight или WPF

Вам необходимо создать ValueConverter.Для этого вам нужно создать новый класс, который реализует интерфейс IValueConverter.В MSDN есть подробное объяснение того, как это сделать.

Silverlighthttp://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=VS.95%29.aspx

WPFhttp://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=VS.100%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...