我的標籤內容綁定到虛擬機,並根據計算結果爲負值或正值。如果他們是積極的,我希望前景是一個特定的顏色和不同的顏色,如果他們是負面的。我應該通過綁定標籤的前景來處理VM中的所有這些嗎?只有4個標籤順便說一句。MVVM基於標籤內容的值更改標籤前景
感謝
我的標籤內容綁定到虛擬機,並根據計算結果爲負值或正值。如果他們是積極的,我希望前景是一個特定的顏色和不同的顏色,如果他們是負面的。我應該通過綁定標籤的前景來處理VM中的所有這些嗎?只有4個標籤順便說一句。MVVM基於標籤內容的值更改標籤前景
感謝
我先給查看處理它是如何顯示的標籤。在我看來,我會將這種顏色邏輯放在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
}
我會認爲這是Silverlight的或WPF
你需要創建一個ValueConverter。爲此,您需要創建一個新類, 實現了IValueConverter
接口。 MSDN有關如何執行此操作的詳細說明。
的Silverlight
http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=VS.95%29.aspx
WPF
http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=VS.100%29.aspx