欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-07 17:04:55
...

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