fla*_*aud 12 .net wpf datagrid resize
我们有一个自定义DataGrid控件,可以动态生成由XML结构确定的列.
在创建每个列时,我们给它一个星号单位类型,因为我们要确保在DataGrid中永远不会有任何水平滚动.
DataGridTextColumn column = new DataGridTextColumn();
column.Width = new DataGridLength(entity.DisplaySize, DataGridLengthUnitType.Star);
Run Code Online (Sandbox Code Playgroud)
但是,我们注意到,当渲染DataGrid时,它会以给定列的最小大小呈现,然后在完全呈现DataGrid后,它会调整列的大小以适合DataGrid.这会导致闪烁效应.
有人有任何可能的解决方案吗?也许如何在后台呈现DataGrid,然后在列完成后显示?还是其他任何想法?
不幸的是,这是正常行为。它与控件的呈现方式有关。在 WPF 中,您有一层又一层的控件,并且 DataGrid 在完成渲染之前无法知道控件的类型。
因此,第一个布局过程创建了控件,但随后必须经过第二个过程来测量这些控件有多大。一旦知道控件有多大,它就可以开始调整列的大小。
DataGrid 是 WPF 的高度可配置和动态布局系统不起作用的场景的一个很好的示例。为了获得您习惯的性能,您需要使用非 WPF 网格,该网格能够更好地预测其自身的层次结构,从而执行此类测量,而无需预先渲染所有内容。WPF 中存在此类控件,但您必须找到它们。
这是 xceed 的一个:http://xceed.com/Grid_WPF_Intro.html?gclid= CNKE8rOBtrICFQfonAodHQ8AEA
这是来自 Telerik 的一个:http ://www.telerik.com/products/wpf/gridview.aspx
(由于需要平衡灵活性和性能,以及现代数据网格中预期的大量功能,该控件长期以来一直被认为是控件开发的顶峰。好的数据网格极难构建。在 Excel 中,Microsoft 构建了一个整个应用程序本质上是围绕一个美化的数据网格。所有这些都说明,您可能无法免费找到您正在寻找的东西。)
请参阅此问题:WPF DataGrid Vs Windows Forms DataGridView
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |