2011-06-28 123 views
4

我的標籤內容綁定到虛擬機,並根據計算結果爲負值或正值。如果他們是積極的,我希望前景是一個特定的顏色和不同的顏色,如果他們是負面的。我應該通過綁定標籤的前景來處理VM中的所有這些嗎?只有4個標籤順便說一句。MVVM基於標籤內容的值更改標籤前景

感謝

回答

5

我先給查看處理它是如何顯示的標籤。在我看來,我會將這種顏色邏輯放在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 
}