1.首先创建一个改变Foreground的类。
看自己需求放在哪里,我是放在了Common公用项目下(放置路径不同,需要引入的命名空间不同,需要注意一下)
public class ValueToBrushConvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double number = ConvertToDouble(value);
if (number > ConvertToDouble(parameter))
{
return Brushes.Red; // 返回大于某个值的颜色
}
else
{
return Brushes.Green; // 返回默认颜色或背景色
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Brushes.Green; // 返回默认颜色或背景色
}
private double ConvertToDouble(object value)
{
double d;
double.TryParse(value.ToString(), out d);
return d;
}
}
ConvertToDouble是我自定义的,看自己的需求是什么值类型自己转换。
下面就是加载命名空间:
这里我是在初始的时候加载的App.xaml,或者在自己用的窗体里加载都可以:
在App.xaml 里引入:
xmlns:localCommon="clr-namespace:LaserDeviceAging.Common;assembly=LaserDeviceAging.Common"
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
....
<localCommon:ValueToBrushConvert x:Key="ValueToBrushConvert"/>
</ResourceDictionary>
</Application.Resources>
datagrid写法:
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"><!--Height="850" Width="1250"-->
<DataGrid ItemsSource="{Binding AgingRecordList,Mode=TwoWay}" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTemplateColumn Header="1">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock HorizontalAlignment="Center" Text="{Binding Temperature1}" Foreground="{Binding Path=Temperature1, Converter={StaticResource ValueToBrushConvert},ConverterParameter=20}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
ConverterParameter 是用来进行和单元格比较的数值。