最近在使用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宽度更新。
相关文章
- word字体放大后只显示一半_word字体放大后显示不完整的两种解决办法
- PullToRefreshListView 进入界面不能立即显示刷新控件的bug 解决方案
- swiper.js在隐藏/显示切换时,轮播出现bug的解决办法
- [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
- 自己动手修复PADS Logic 9.5选项菜单显示不全的Bug
- 自己动手修复PADS Layout 9.5封装向导窗口显示不全的Bug
- GNS3中使用securityCRT终端出现字符显示不完整的解决办法
- VS程序输出窗口显示运行结果不完整的解决办法
- 解决SecureCrt水平显示不完整的问题
- ps 命令显示不完整的问题