如何创建包含分组的自定义(平面)集合?

时间:2014-10-29 00:16:23

标签: c# wpf datagrid data-virtualization

我正在使用WPF DataGrid和.Net 4.5,我正在尝试为大型集合推出自己的数据虚拟化容器。我已经在网上找到了许多有关如何实现数据虚拟化的有用示例,但在我看过的每个示例中,如果进行任何分组,则会节省成本。我的分组简单而静态。有没有办法在WPF中伪造分组,这样我的集合不必提前枚举所有项目?例如,是否有人覆盖了ListCollectionView的{​​{1}}并在每个群组的开头只返回了一个GetItemAt()对象?

具体示例:

  1. 比如说我有一个包含100K记录的数据库。我想创建一个类似于Bea Stollnitz' example的数据虚拟化集合,并在WPF DataGrid中使用它。
  2. 我想在一个字段上对DataGrid中的项目进行分组,但是我可以通过修改我的数据库查询来首先返回组A中的所有项目,然后返回组B中的所有项目。在DataTable甚至看到它之前完成分组
  3. 即使我的集合(从DataGrid的角度来看)是平的,我如何直观地表示WPF DataGrid中的分组?我发现在DataGrid中显示分组的唯一方法是使用CollectionView或类似方法。

1 个答案:

答案 0 :(得分:1)

如果您正在处理平面列表和静态分组列表并且担心与聚合相关的性能,我会考虑将两个版本的数据集存储在索引中,并且只需抓住每个特定情况所需的那个版本。