silverlight中DataGrid单元格变色问题

silverlight中DataGrid单元格变色问题,第1张

概述      学silverlight快半个月了,在公司中学习与在学校的学习就是不一样,在学校如果要学习silverlight那当然是先图书馆借一本或自己买一本书然后夸啦啦得看完,接着练习几个题目就差不多了。在公司不一样,公司主要还是任务驱动型的。      在这我说说在公司修改bug过程中走的弯路及一步一步的解决过程。      现在带我的人需要我改一个bug。这个bug是这样子的:在一个Data

      学silverlight快半个月了,在公司中学习与在学校的学习就是不一样,在学校如果要学习silverlight那当然是先图书馆借一本或自己买一本书然后夸啦啦得看完,接着练习几个题目就差不多了。在公司不一样,公司主要还是任务驱动型的。

     在这我说说在公司修改BUG过程中走的弯路及一步一步的解决过程。

     现在带我的人需要我改一个BUG。这个BUG是这样子的:在一个DataGrID中遇到特殊数据需要显示特殊的颜色,但是现有系统中出现的问题是刚加载完时颜色能正确地显示,但是当拖动滚动条时颜色就搞乱了。使用过DataGrID的应该都知道,如果直接根据数据值的范围来判断实现以下IvlueConverter接口就肯定能实现指定单元格变色。比如我测试用的代码是:

前台代码:

 

后台代码:

1、继承IValueConverter接口的类

 

数据是从数据库里面取出来的,在此也就不在写了。由这些代码即可实现成绩小于60的显示为红色。

 

但是现在的情况是有两个数据源,一个数据源用于给DataGrID的ItemSource赋值以显示这些数据,另一个数据源是控制信息,该控制信息是一个二维矩阵即是坐标的集合,每一个元素代表一个单元格,现在只要能取到这个单元格那就万事大吉。此时自然想到这样写:

 

这样指定单元格的颜色就变为红色了,但是当我滑动滚动条时发现颜色乱了。花了很长时间去找原因可就是没找出来,最后还去找替代方案现在新建一个隐藏列,该隐藏列存储的是控制数据源转换后的值,然后根据该值在IVlueConverter接口中实现数据的控制。要这样做的话势必在给DataGrID赋值时得把两个数据源合并为一个,这可不是我愿意的,最后检查了很久终于发现问题所在。真正出错的是我自己的变成习惯,一直以为用了if如果else中不用执行就可以不写了。事实上这次我错了,DataGrID在每次滚动滚动条时都保留了上次单元格的颜色,当你在此滚动时出现颜色的单元格就会发生变化了。后来加上一句

else

{

       txt2.Background = new SolIDcolorBrush(colors.transparent);

}

 

就不会出现这样的错了。我真正写的代码是:

 

 

这样就有四个单元格变色而且滑动滚动条颜色不会紊乱。

 

花了很长时间来改这个BUG,故而写下此博文!

总结

以上是内存溢出为你收集整理的silverlight中DataGrid单元格变色问题全部内容,希望文章能够帮你解决silverlight中DataGrid单元格变色问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1078483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存