WPF:DataGrid按自定义逻辑改变文字颜色

    主要利用IValueConverter 接口,该转换器接口提供一种将自定义逻辑应用于绑定的方法。
    该转换器似乎还有更多骚操作,暂时没有深究。

转载自:WPF DataGrid 动态转换字体颜色

.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;
        }
    }

你可能感兴趣的:(WPF记录)