我有一个 WPF DataGrid,它显示超过 60 列和任何多达 10000 行的数据集。 DataGrid 加载完整的数据集 很快并很好地处理它们。
colA colB colC colD colE ...
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
然而,行被分成组。我需要显示一个文本字符串的组标题,并能够展开/折叠组。
我可以对 DataGrid 使用分组,其中 看起来不错但是是难以置信的慢 最初显示大组。
colA colB colC colD colE ...
^ group title A
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
^ group title B
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
我可以通过添加一个包含组描述的额外列在 DataGrid 外部对自己进行分组。然后我可以通过更改提供给网格的数据集来折叠/展开任何组。即 非常快 ,但它看起来很垃圾因为它浪费了很多空间,尤其是对于长组标题。
group colA colB colC colD colE ...
group title A
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
group title B
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
我想要的是两全其美,即 又快又漂亮 ,
能够像 DataGrid 分组一样显示数据,
但要在外部进行分组。
colA colB colC colD colE ...
^ Very long comment about the data ...
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
^ Another arbitrarily long comment...
1 2 3 4 5
5 6 7 8 9
2 3 4 3 4
知道如何以这种方式显示我的组标题吗?
最佳答案
这是一个老问题,但是我在这里添加了答案以供将来引用:
从 .Net 4.5 开始,微软增加了 IsVirtualizingWhenGrouping
属性(property)。设置 DataGrid
的这个属性至 True
解决了这个问题。
<DataGrid VirtualizingPanel.IsVirtualizingWhenGrouping="True">
来源:This blog (显然这个博客不再可用)
关于WPF DataGrid v 快,分组 v 慢。如何在不使用分组的情况下显示组行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155424/