在WPF中使用DataGrid控件,需要实现一个要求:
在一个列中,除了第一格文字颜色固定为黑色外,其它每个单元格的文字色要根据其上方的单元格的内容来决定,比如这样列标题
0红色
1黄色
2绿色
3蓝色我能想到的方法是为列的单元格前景色设置绑定,绑定到上一个单元格的文本,并添加转换器将文本转换成颜色.
但不知道如何才能绑定上一格,请知道的朋友指点一下,谢谢也想过能否直接在数据源上加上颜色信息,但也失败了,原因是DataGrid在运行时可能会被排序,而排序动作是无法影响到数据源的顺序的,也就是说一旦用户进行排序,数据源就无法判断每个单元格上面的到底是哪一格了.
在一个列中,除了第一格文字颜色固定为黑色外,其它每个单元格的文字色要根据其上方的单元格的内容来决定,比如这样列标题
0红色
1黄色
2绿色
3蓝色我能想到的方法是为列的单元格前景色设置绑定,绑定到上一个单元格的文本,并添加转换器将文本转换成颜色.
但不知道如何才能绑定上一格,请知道的朋友指点一下,谢谢也想过能否直接在数据源上加上颜色信息,但也失败了,原因是DataGrid在运行时可能会被排序,而排序动作是无法影响到数据源的顺序的,也就是说一旦用户进行排序,数据源就无法判断每个单元格上面的到底是哪一格了.
->"上一格“表述的太笼统,转换器是可以的。 根据的当前行可以获取到当前行的索引,具体查询WPF的IndexFromContainer方法。根据索引再取的上一行数据,获取对应的单元格值改变颜色即可。