我知道 DataGrid 支持虚拟化,因此它只为可见行创建网格单元。但是,这似乎只有在 DataGrid 的大小受到限制时才有效。
在我的场景中,一个 DataGrid 被放置在一个滚动查看器中,就像这样
<ScrollViever>
<StackPanel>
<more elements .../>
<DataGrid ... />
<more elements .../>
</StackPanel>
</ScrollViever>
这似乎打破了虚拟化。在 DataGrid 应该显示大量项目的情况下,可视化树变得非常非常大,甚至在外部 ScrollViewer 中向下滚动之前也是如此。
有什么方法可以防止 DataGrid 预先创建所有单元格,而是在 ScrollViewer 向下滚动时创建它们?
编辑:基本上托管这个的页面应该像一个网页,顶部有一些文本,一个大表格,底部有更多文本。而不是顶部/底部始终可见并且仅滚动网格的dockview,整个页面应该滚动。该设置实现了这一点,但会受到预先创建的所有内容的影响。
另一个编辑:有没有办法检测数据网格的特定行被滚动到视图中?典型的延迟加载文章使用数据网格的滚动查看器向网格添加更多项目,这在此处不起作用。