实现这个功能可以使用类型转换器
1建立一个类BGConverter.cs该类需要继承IValueConverter接口,并实现接口的Convert与ConvertBack方法。注意在Class上需要加上一句话,
[ValueConversion(typeof(int),typeof(Brushes))]
前一个type是源类型,后一个是目标类型
[ValueConversion(typeof(int),typeof(Brushes))] class BGConverter:IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { int surplus=(int)value; if(surplus<10) { return Brushes.Red; }else if(surplus>100) { return Brushes.Yellow; }else { return Brushes.White; } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return null; }
Convert方法中对value值进行判断,小于10的返回红色,大于100返回黄色,其他为白色。ConvertBack方法我用不到,返回空值。
在xaml文件的window里加入一句话xmlns:local="clr-namespace:当前命名空间"
在DataGrid中加入DataGrid.Resource
1 <DataGrid.Resources> 2 <local:BGConverter x:Key="bgconverter"/> 3 <Style TargetType="DataGridRow"> 4 <Setter Property="Background" Value="{Binding Path=Surplus, Converter={StaticResource bgconverter}}"/> 5 </Style> 6 </DataGrid.Resources>
setter的value绑定值就是需要转换类型的绑定值。