我的标签内容绑定到虚拟机,并根据计算结果为负值或正值。如果他们是积极的,我希望前景是一个特定的颜色和不同的颜色,如果他们是负面的。我应该通过绑定标签的前景来处理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