<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 。
第二点:根据传过来的值动态改变字体颜色。
第三点:试了很多方法搞不懂,
这里的字体颜色指的是整个DataGrid的字体颜色吗
不是的 是指某一个单元格的字体颜色
比如 设定 某一单元格值为aa 那么aa的字体颜色发生改变 变成红色的 我试了试颜色转换器 搞不懂
@七`~:
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>
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;
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; } }
不知道是不是你要的效果。
试试重写某个Column的Template,然后使用textblock binding到你的数据结构
试过了 不行啊
@七`~: WPF的DATAGRID有一套样式的,如果想针对不同的状态来设置颜色,比如选择、编辑等,可以在styletemplate里定义,如果想对数值定义不同的颜色,可以使用datatemplate等。
建议使用样式来实现,切换样式达成目的。
试过了 不靠谱啊
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