【发布时间】:2012-09-07 20:52:35
【问题描述】:
我们有一个自定义的 DataGrid 控件,它可以动态生成由 XML 结构确定的列。
在创建每一列时,我们给它一个星号单位类型,因为我们希望确保 DataGrid 中永远不会有任何水平滚动。
DataGridTextColumn column = new DataGridTextColumn();
column.Width = new DataGridLength(entity.DisplaySize, DataGridLengthUnitType.Star);
但是,我们注意到,在渲染 DataGrid 时,它会以指定给列的最小大小进行渲染,然后在完全渲染 DataGrid 后,它会调整列的大小以正确适应 DataGrid。这会导致闪烁效果。
有没有人有任何可能的解决方案?也许如何在后台渲染 DataGrid,然后在列完成后显示?还是有其他想法?
【问题讨论】:
-
这是一个很好的问题。我遇到了完全相同的问题,但没有找到解决方案。
-
这在 WinForms 中运行良好,似乎只是 WPF 问题。我们尝试在渲染期间暂停布局,但该方法也没有成功,没有任何区别。
-
您是否尝试过仅使用 XAML 的方法?
-
@BigDaddy 他将如何在 XAML 中动态创建列?
-
采用纯 WPF 方法实际上并不难,但结果不会比已经使用的方法好(而且可能会更糟)。