主要利用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;
}
}