【发布时间】:2014-12-24 14:11:29
【问题描述】:
我正在使用 WPF DataGrid 和 .Net 4.5,并且正在尝试为大型集合推出自己的数据虚拟化容器。我已经在网上找到了许多有用的例子来说明如何实现数据虚拟化,但是在我看到的每个例子中,如果你进行任何分组,节省的费用就会丢失。我的分组是简单而静态的。有没有办法在 WPF 中伪造分组,使我的集合不必提前枚举所有项目?例如,有没有人覆盖 ListCollectionView 的 GetItemAt() 并在每个组的开头返回一个 CollectionViewGroup 对象?
具体例子:
- 例如,我有一个包含 100K 记录的数据库。我想创建一个类似于Bea Stollnitz' example 的数据虚拟化集合并在 WPF DataGrid 中使用它。
- 我想在一个字段上对 DataGrid 中的项目进行分组,但我可以通过修改我的数据库查询来做到这一点,首先返回组 A 中的所有项目,然后返回组 B 中的所有项目。分组甚至在 DataTable 看到它之前完成.
- 即使我的集合(从 DataGrid 的角度来看)是扁平的,如何直观地表示 WPF DataGrid 中的分组?我发现在 DataGrid 中显示分组的唯一方法是使用 CollectionView 或类似方法。
.
【问题讨论】:
-
所以我想我可能终于(经过 3 天的搜索)找到了一个可行的答案,this link 来自StackOverflow。
Fake grouping with the help of the ViewModel部分特别有用。
标签: c# wpf datagrid data-virtualization