WPF DataGrid v 快,分组 v 慢。如何在不使用分组的情况下显示组行

标签 wpf datagrid grouping

我有一个 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/

相关文章:

css - GWT CSS DataGrid 隐藏按钮

wpf - 当中间列具有 MinWidth 时,为什么 WPF Grid 不能平均共享空间?

c# - 动态数据显示分散的日期时间轴

c# - 如何从列表中查找(和删除)嵌套对象

wpf datagrid icollectionview 排序BUG?

r - 识别 R 中连续重叠的段

WPF datagrid 单元格颜色取决于先前的单元格值

c# - 在 WPF DataGrid 中合并单元格

R - 设置使用 by() 创建的对象的类

java - Java 中将多个字符串分组为一个通用字符串