用一个ProcessBar显示电量,低于20%时候,ForeGround为红色,否则为绿色,
页面使用了MVVM绑定到了ViewModel, ProcessBar XAML为
<ProgressBar Maximum="" Value="{Binding RemainPercent}"
Foreground="{Binding RemainPercent, Converter={StaticResource ForgroundConverter}}" ></ProgressBar>
其中 ForgroundConverter为资源的key
xmlns:converter ="clr-namespace:XXX.XXX" <UserControl.Resources>
<converter:PercentForgroundConverter x:Key="ForgroundConverter"/>
</UserControl.Resources>
PercentForgroundConverter 为实现了IValueConverter的类,方法如下,
Brushes的命名空间为System.Windows.Media。
public class PercentForgroundConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double percent = (double)value;
if (percent<=)
{
return Brushes.Red;
}
return Brushes.Green;
} public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
1. 当门限值(文中为20)固定情况下,可以这样写,若门限值不固定,可以将门限值以参数的形式传进来;
2. 只有当绑定的值(RemainPercent)发生变化以后,才会执行Convert 方法。