最近在使用DataGrid时遇到一个bug, 在客户机器上DataGrid的内容显示不完整, 具体表现为某些列的显示为空。

具体的可视树为:DataGridCell > ContentPresenter > TextBlock。其中:TextBlock的Width为Auto, HorizontalAlignment为Stretch;ContentPresenter的With为Auto,HorizontalAlignment为Left。
用snoop调查的结果是,在显示正常的机器上ContentPresenter的Width为TextBlock的ActualWidth,在显示错误的机器上ContentPresenter的Width为0.很明显,因为ContentPresenter的宽度太小导致文字看不见而不是TextBlock没有显示文字。
解决办法:设置ContentPresenter的HorizontalAlignment为Stretch。
遗留问题:为什么同样的HorizontalAlignment在有些机器上Width会为0,而客户机器上为正常宽度呢?
我猜测是机器性能配置低,数据库的数据获取耗时,导致UI渲染时数据并没有完全获取成功,因此DataGridCell刚开始的Width即为0, 而当数据获取成功后TextBlock的渲染正常,而此时的CellTemplate内容更新并没有导致Cell的ContentPresenter宽度更新。

最新文章

  1. [LeetCode] Reverse Linked List
  2. Android开发中上线后修改应用名称的若干问题
  3. data.table包
  4. [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
  5. C#用正则表达式 获取标签的属性或值
  6. [转载]MongoDB优化的几点原则
  7. 数组操作- reverse sort each 操作
  8. HDU4681 String(dp)
  9. Gradle 1.12 翻译——第十六章. 使用文件
  10. winform无边框窗口拖动
  11. laravel中token的使用方式
  12. zoj1002 Fire Net
  13. CentOS7使用dnf安装mysql
  14. MySQL学习笔记_6_SQL语言的设计与编写(下)
  15. viewport定义,弹性布局,响应式布局及LESS和SASS框架应用
  16. python slenium 中CSS定位
  17. 正交表和TCG的使用
  18. 使用MyEclipse开发Java EE应用:EJB项目开发初探(上)
  19. win10系统安装docker注意事项
  20. .Net程序员玩转Android系列之一~Java快速入门

热门文章

  1. linux 音频驱动
  2. js原生插件格式解析
  3. Spring MVC 接收多个实体参数
  4. 吴恩达深度学习笔记(十二)—— Batch Normalization
  5. Python面向对象的编程注意细节
  6. LCN协调者服务集群
  7. 【bzoj1232】[Usaco2008Nov]安慰奶牛cheer(最小生成树)
  8. java 命令行
  9. UVA 1638 Pole Arrangement (dp)
  10. Gerrit使用感受