我知道DataGrid支持虚拟化,所以它只会为可见行创建网格单元。然而,这似乎只适用于DataGrid受到大小限制的情况。
在我的场景中,一个DataGrid被放置在一个滚动查看器内,如下所示:
<ScrollViever>
<StackPanel>
<more elements .../>
<DataGrid ... />
<more elements .../>
</StackPanel>
</ScrollViever>
这似乎破坏了虚拟化。在DataGrid应该显示大量项目的情况下,即使在外部ScrollViewer中向下滚动之前,可视树也会变得非常非常大。
有没有办法防止DataGrid预先创建所有单元格,而是随着ScrollViewer向下滚动而创建它们?
编辑:基本上,托管此内容的页面应该像具有顶部文本、大型表格和底部其他文本的网页一样。而不是一个DockView,其中顶部/底部始终可见,只有网格被滚动,整个页面应该滚动。这种设置可以实现这一点,但遭受了所有内容都被预先创建的问题。
另一个编辑:是否有一种方法检测到DataGrid的特定行已滚动到视图中?典型的懒加载文章使用datagrid的scrollviewer向网格添加更多项,但这里不起作用。