ScrollViewer使用DataGrid缓慢执行

我有以下情况:

      

现在,当我将DataGrid绑定到大量数据(大约10,000行)时,我的性能非常慢。 事实上,我得到OutOfmemoryexception(我有8 GB的内存)! 我在某处读到这是因为ScrollViewer会覆盖DataGrid虚拟化(或类似的东西),但我不知道如何防止这种情况。 如果我删除ScrollViewer,问题就解决了! 数据加载时间不到一秒钟。

我想保留ScrollViewer(因为其他控件)并且具有良好的性能。 那可能吗? 如果没有,还有其他解决方案吗?

这些问题的常见解决方法是在与DataGrid相同的行中添加一个不可见的“大小调整元素”,然后可以将DataGrid.Height绑定到大小调整元素的ActualHeight 。 这样,您的DataGrid将始终使用RowDefinition的高度。 例

                

外部ScrollViewer有效地为DataGrid提供了所需的空间,这样它的高度就变得很大,一次显示所有行。 例如,通过在其上显式设置高度来限制DataGrid。