WPF的DataGrid绑定ItemsSource后第一次加载数据有个别列移位的解决办法
最近用WPF的DataGrid的时候,发现一个很弱智的问题,DataGrid的ItemsSource是绑定了一个属性:

然后取数给这个集合赋值的时候,第一次赋值,就会出现列移位

起初还以为是显卡的问题,结果今天来集成显卡的电脑上也一样出现,具体原因不详,以下是几种解决办法:
1.(首选,有效果)DataGrid的RowHeaderWidth="0",必须赋值为0,不能不赋值,也不能赋其他值。
2.(有效果)绑定的源一开始就要赋值,即至少要有一行数据。
3.(效果不一,有的地方有效有的地方无效)不用绑定,每次获得数据后手动赋ItemsSource的值。
4.(有效,比较繁琐)把每一条数据封装成对象,DataGrid封装成列模板,每一列绑定这个对象的属性。
对于使用DataTable还是用集合做为数据源,总结以下几点:
a)绑定DataTable的DefaultView有几个个好处:
1.方便,直接取数绑给目标,不需要再转成集合给目标每一列绑定。
2.易替换,如果要增减列,只需要改取数语句,界面不需改动。
3.相对于转换成集合来说理论上节省性能。
4.在大数据量下,如果前后两次获取的数据源没有变动,不会重绘UI,而集合的话每次都会重绘。
缺陷:
1.需要代码设置每一列的列宽,否则UI会很难看,全挤在一起。(代码设置的过程可能会消耗性能)。
2.无数据时UI的数据区域什么都没有,一片空白,影响用户体验。
适用的地方:一般是使用在数据量大、不需要操作数据的地方,只是单纯的显示。
b)绑定集合的好处:
1.UI里可以直接设置列宽,不需要代码再设。
2.不存在列位移的现象(至今未发现)。
3.无数据时UI上也会有列头。
4.可以灵活使用列模板。
缺陷:
1.UI和集合数据列绑死,增减列需要动UI。
2.取到数据之后还要转换成集合,理论上耗能。
3.步骤繁琐,需要将数据条目封装成对象,如果字段很多就烦了。
适用的地方:数据量不大、需要操作数据,比如要加一列CheckBox标识选中,加列ComBox提供候选等。
WPF的DataGrid绑定ItemsSource后第一次加载数据有个别列移位的解决办法的更多相关文章
- datagrid 根据指定参数重新加载数据
$('#statisticalRecordList').datagrid('reload',{ start_date:$('#dd1').datebox('getValue'), end_date: ...
- vue页面加载前显示{{代码}}的原因及解决办法
进入正题,简单说说自己对html中出现{{}}的原因及解决办法: 这样写的话,就会出现{{}}一闪的情况: 原因:html的加载顺序: 解析html结构 -> 加载外部脚本和样式表文件 -> ...
- 【转】android加载大量图片内存溢出的三种解决办法
方法一: 在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return ...
- Github网站加载不完全,响应超时,解决办法
Github网站加载缓慢信息不全解决方法 Github是一个代码托管平台和开发者社区,开发者可以在Github上创建自己的开源项目并与其他开发者协作编码.毫不夸张地说,高效利用Github是一个优秀的 ...
- 频繁加载、删除swf造成flash崩溃解决办法
最近在项目中遇到flash崩溃问题,经分析,都是在swfobject.embedSWF这一步卡死,页面及flash均无反应. 造成此问题的场景是,在同一根节点上频繁清空节点.调用swfobject ...
- vue+elementui 开发的网站IE浏览器加载白屏(不兼容)解决办法
1.需要检查一下 export default { name: 'aa',-------vue的name是不可以重复的-----这个是决定性原因 data() { return {} } 2.变量声明 ...
- 解决easyui datagrid加载数据时,checkbox列没有根据checkbox的值来确定是否选中
背景: 昨天帮朋友做一个easyui datagrid的小实例时,才发现easyui datagrid的checkbox列,没有根据值为true或false来选中checkbox,当时感觉太让人失 ...
- Flutter 初始化数据完成后再加载页面
一.初始化数据完成后再加载数据 1.为了达成这个目标尝试了多种方法总是失败 在Init 和didChangeDependencies 初始化数据过也不行 @override void didChang ...
- C# superGridControl 样式设置、加载数据、获取数据
样式设置 superGridControl1.PrimaryGrid.SelectionGranularity = SelectionGranularity.Cell; //设置选中样式 单元格.整列 ...
随机推荐
- ON、WHERE、HAVING的区别
ON .WHERE.HAVING都能通过限制条件筛选数据,但他们的使用及其不同.下面我们来分析三者之间的区别. 1. ON 和WHERE 所有的查询都回产生一个中间临时报表,查询结果就是从 ...
- Arduino开发常见错误
使用Ethernet时需要指定访问服务器的ip,我用的是本机做服务器.但是有一天重启了路由器,ip地址就变了!程序得跟着改! Arduino突然烧写不了程序:可能是正在运行的程序让arduino死机了 ...
- HashBiMap
HashBiMap AbstractMap类实现了Map接口定义的一些方法,而BiMap类定义了其子类需要实现的一些方法,使得所有实现BiMap的类必须符合其独有的特性:键.值都是唯一的.HashB ...
- Yii 显示错误信息(Fatal Error,Warning)在页面上
Yii由于设计上对于一些php奇怪问题的顾虑,并没有像cake,kohana一样把php错误信息打印在页面上. 遇到错误时,只是显示白页,这让没有经验的programmer会一头雾水. 实际上通常vh ...
- YII Framework学习教程-YII的安全
web应用的安全问题是很重要的,在“黑客”盛行的年代,你的网站可能明天都遭受着攻击,为了从某种程度上防止被攻击,YII提供了防止攻击的几种解决方案.当然这里讲的安全是片面的,但是值得一看. 官方提供的 ...
- 《C++ primer》--第1,2章小结
来源:http://blog.csdn.net/wangqiulin123456/article/details/8483853 1.变量初始化: 定义变量时,应该给变量赋初始值,除非确定将 ...
- windows下ncl生成tiff图(案例)
一:安装软件和准备数据 1.需要安装Vapor(注意安装路径不要存在空格) 注:版本2.4.2及以后 2.安装NCL,方法见http://www.cnblogs.com/striver-zhu/p/4 ...
- MyEclipse10导入工程jsp报错问题
好多时候,再用myecplise进行项目开发的时候,遇到导入工程的时候,工程内的jsp页面好多都报错.这是什么原因造成的呢? 我对于我遇到的问题及解决方法,跟大家分享一下. 我的Jsp页面报错的原 ...
- 关于WordPress建站的原理二三事
在写关于仿站文章详情页如何制作之前,我觉得有必要就一些原理性的问题,做一些说明.文章详情页的核心模块和首页有很多相似的地方,比如调用文章的标题.文章的内容.文章分类.作者等,实现起来都差不多,因此,了 ...
- TopFreeTheme精选免费模板【20130619】
今天给大家推荐7款最新精选的WordPress主题和一个WooCommerce订单跟踪插件,如果你有更换自己博客主题的想法或者正要做自己的博客,不妨试试.一些是WordPress商业模板,但都可以免费 ...