Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF DataGrid速度非常慢,如何提高初始加载时间?_Wpf_Datagrid_Performance_Grouping - Fatal编程技术网

WPF DataGrid速度非常慢,如何提高初始加载时间?

WPF DataGrid速度非常慢,如何提高初始加载时间?,wpf,datagrid,performance,grouping,Wpf,Datagrid,Performance,Grouping,我有一个显示分组数据的DataGrid窗口 我正在WPF数据网格中加载大约4 x 300个项目,这些项目分为4组 分组将禁用虚拟化 我设置IsAsync=“True”使窗口快速打开,但数据网格在11秒后刚刚填充 如何加快数据的加载/显示速度?您自己说的-分组禁用虚拟化;我认为现在,如果可能的话,分别显示每个组(在其自己的数据网格中)是一种方式。。。或者其他一些类似的技巧,简单地使用分组不显示所有项目 稍后编辑: 实际上,在上有一篇非常有趣的文章,讲述了如果您真的需要使用虚拟化进行列表框分组,如何

我有一个显示分组数据的DataGrid窗口

我正在WPF数据网格中加载大约4 x 300个项目,这些项目分为4组

分组将禁用虚拟化

我设置IsAsync=“True”使窗口快速打开,但数据网格在11秒后刚刚填充


如何加快数据的加载/显示速度?

您自己说的-分组禁用虚拟化;我认为现在,如果可能的话,分别显示每个组(在其自己的数据网格中)是一种方式。。。或者其他一些类似的技巧,简单地使用分组不显示所有项目

稍后编辑:
实际上,在上有一篇非常有趣的文章,讲述了如果您真的需要使用虚拟化进行列表框分组,如何着手进行操作。不确定这是否值得,但这是可能的。

不确定它是否相关,但我与DataGrid有一个类似的问题,在调整窗口大小、列排序等操作后,它几乎需要几秒钟才能刷新,并在执行此操作时锁定了窗口UI(1000行,5列)

这归结为WPF大小计算的一个问题(bug?)。我把它放在一个带有RowDefinition Height=“Auto”的网格中,这导致渲染系统在运行时通过测量每一列和每一行的大小来尝试重新计算DataGrid的大小,大概是通过填充整个网格(据我所知)。它应该以某种方式明智地处理这个问题,但在本例中,它不是

要快速检查这是否是相关问题,请在测试期间将DataGrid的高度和宽度属性设置为固定大小,然后再次尝试运行。如果您的性能恢复,以下选项中可能会有永久性修复:

  • 将包含元素的大小更改为相对(*)或 固定值
  • 将DataGrid的MaxHeight和MaxWidth设置为较大的固定值 比正常使用时要多
  • 尝试其他具有不同大小调整策略的容器类型(网格、DockPanel等)

在.NET 4.5.2中,虚拟化分组项目终于成为可能:

<DataGrid VirtualizingPanel.IsVirtualizingWhenGrouping="True" />


+1。我通过在主/细节样式中使用两个网格解决了这个问题。将内存使用量从大约3 GB降至更合理的水平!