首页 新闻 搜索 专区 学院

WPF DataGrid 动态转换字体颜色

0
悬赏园豆:100 [待解决问题]

<DataGrid Name="gv_users" ItemsSource="{Binding UserList}" SelectedItem="{Binding SelectedUser,Mode=OneWayToSource}" SelectedIndex="{Binding SelectedUserIndex}"  IsReadOnly="True" Grid.Row="1" Margin="0,4,0,0"  FrozenColumnCount="5">

第一点: 这是我的前台的DataGrid 。

第二点:根据传过来的值动态改变字体颜色。

第三点:试了很多方法搞不懂,

七`~的主页 七`~ | 初学一级 | 园豆:14
提问于:2014-09-05 12:17
< >
分享
所有回答(4)
0

这里的字体颜色指的是整个DataGrid的字体颜色吗

jello chen | 园豆:7096 (大侠五级) | 2014-09-05 12:28

不是的  是指某一个单元格的字体颜色   

支持(0) 反对(0) 七`~ | 园豆:14 (初学一级) | 2014-09-05 12:32

比如 设定 某一单元格值为aa   那么aa的字体颜色发生改变  变成红色的    我试了试颜色转换器  搞不懂

支持(0) 反对(0) 七`~ | 园豆:14 (初学一级) | 2014-09-05 12:34

@七`~: 

Xaml代码:

<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>
View Code

cs代码:

List<Student> list = new List<Student>
            {
                new Student{ID=1,Name="jim",Age=20},
                new Student{ID=2,Name="lucy",Age=18},
                new Student{ID=3,Name="lily",Age=20}
            };
            this.DataContext = list;
View Code

Converter:

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;
        }
    }
View Code

不知道是不是你要的效果。

支持(1) 反对(0) jello chen | 园豆:7096 (大侠五级) | 2014-09-05 15:43
0

试试重写某个Column的Template,然后使用textblock binding到你的数据结构

Winterfell~ | 园豆:202 (菜鸟二级) | 2014-09-05 13:43

试过了   不行啊

支持(0) 反对(0) 七`~ | 园豆:14 (初学一级) | 2014-09-05 13:56

@七`~: WPF的DATAGRID有一套样式的,如果想针对不同的状态来设置颜色,比如选择、编辑等,可以在styletemplate里定义,如果想对数值定义不同的颜色,可以使用datatemplate等。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-05 13:59
0

建议使用样式来实现,切换样式达成目的。

519740105 | 园豆:5810 (大侠五级) | 2014-09-05 13:47

试过了   不靠谱啊

支持(0) 反对(0) 七`~ | 园豆:14 (初学一级) | 2014-09-05 13:56
0

wpf datagrid 单元格颜色 根据条件改变颜色 根据表datatable动态显示datagrid内容

http://blog.csdn.net/alsmile/article/details/6593393

WPF DataGrid 改变单元格字体颜色或单元格背景颜色

http://www.silverlightchina.net/html/study/WPF/2012/1127/20472.html

LiuKaiFa | 园豆:1491 (小虾三级) | 2014-09-07 08:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册