WPF:DataGrid按自定义逻辑改变文字颜色
程序员文章站
2022-03-07 17:04:55
...
主要利用IValueConverter 接口,该转换器接口提供一种将自定义逻辑应用于绑定的方法。
该转换器似乎还有更多骚操作,暂时没有深究。
.XAML:需要加入Resources,设置需要改变颜色的对应栏的CellStyle
<Window.Resources>
<loc:ColorConverter x:Key="colorCvt" />
</Window.Resources>
<Grid>
<DataGrid x:Name="dgStudentList" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Foreground" Value="{Binding ID,Converter={StaticResource colorCvt}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Age" Binding="{Binding Age}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
.CS:实现转换器
public class ColorConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
int id;
if (int.TryParse(value.ToString(), out id))//这里改成你需要的逻辑
{
if (id % 2 == 1)
{
return Brushes.Red;
}
}
}
return Brushes.Black;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}