Bug:DataGridCell的显示不完整

最近在使用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宽度更新。
posted @ 2014-01-13 14:29  muzizongheng  阅读(267)  评论(0编辑  收藏  举报
如果我们时时忙着展现自己的知识, 将何从忆起成长所需的无知?