DataGrid虚拟化使用GroupDescriptions绑定到ListCollectionView

时间:2011-12-09 00:55:44

标签: c# wpf wpfdatagrid

正如标题所说,我有一个绑定到ListViewCollection的WPF DataGrid。数据集很大,但是事情加载非常快 - 这要归功于行的虚拟化。

但是,只要我添加一个分组,就会开始加载每一行(我可以从wpf调试消息中看到),让我笨手笨脚地吃掉所有的ram。

这里提到:http://marlongrech.wordpress.com/2008/11/22/icollectionview-explained/

具体而言,“分组将默认禁用虚拟化支持。”因此,对大型数据集进行分组可能非常昂贵,在执行此操作之前要考虑两次......“

这解释了很多,但有人知道如何覆盖该句中的“默认”位吗?我应该完全使用其他东西吗?

1 个答案:

答案 0 :(得分:1)

框架4.0可能没有方便的解决方案,请参阅WPF DataGrid Virtualization with Grouping

您可以展平列表并创建自己的分组(他们开个玩笑吗?)分组和虚拟化http://code.msdn.microsoft.com/windowsdesktop/Grouping-and-Virtualization-56e7d3fe

似乎框架4.5中有一个解决方案,请参阅:

  

在显示大量分组数据时提高了效果

     

当用户界面(UI)元素的子集发生UI虚拟化时   基于哪些项目从大量数据项生成   在屏幕上可见。 VirtualizingPanel定义了   IsVirtualizingWhenGrouping启用UI的附加属性   分组数据的虚拟化。有关分组的更多信息   数据,请参见如何:使用XAML中的视图对数据进行排序和分组。更多   有关虚拟化分组数据的信息,请参阅   IsVirtualizingWhenGrouping附加属性。 (摘自WPF版本4.5中的新功能强调文本