實現這個功能可以使用類型轉換器
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綁定值就是需要轉換類型的綁定值。