我有一个带有DataGrid的窗口,显示分组数据。
我在WPF DataGrid中加载大约4 x 300个项目,这些项目分为4组。
分组禁用虚拟化。
我设置了IsAsync =“True”,因此我的窗口打开速度很快,但DataGrid刚刚在11秒后填充???
如何加快数据的加载/显示速度?
答案 0 :(得分:2)
你自己说过 - 分组禁用虚拟化;我认为现在分别显示每个组(在它自己的数据网格中)是可行的方式......或者其他类似的技巧,只是不使用分组显示所有项目。
很久以后编辑: 实际上,如果您真的需要使用虚拟化进行ListBox分组,那么在http://jerryclin.wordpress.com/2008/02/22/listbox-grouping-and-virtualization/上就如何进行操作实际上是非常有趣的。不确定这是值得的痛苦,但它是可能的。
答案 1 :(得分:0)
不确定它是否相关,但我在DataGrid中遇到了类似的问题,在窗口调整大小,列排序等等之后,它花了几秒钟刷新并锁定了窗口UI(1000行) ,5列)。
使用WPF大小计算得出问题(bug?)。我在RowDefinition Height =“Auto”的网格中得到它,这导致渲染系统尝试通过测量每个列和行的大小来尝试重新计算DataGrid的大小,可能是通过填充整个网格(据我所知)。它应该以某种方式智能地处理它,但在这种情况下它不是。
快速检查以确定这是否是一个相关问题是在测试期间将DataGrid的高度和宽度属性设置为固定大小,然后再次尝试运行。如果您的性能已恢复,则可以在以下选项中进行永久性修复:
答案 2 :(得分:0)
在.NET 4.5.2中,最终可以虚拟化分组项目:
<DataGrid VirtualizingPanel.IsVirtualizingWhenGrouping="True" />