外部作品的虚拟化,ListBox
但内部作品DataGrid
没有。可能是因为外部ListBox
包含ScrollViewer
内部:
提供了一个关于
ScrollViewer
其子内容的窗口。问题是子内容被赋予了无限的虚拟空间。在这个虚拟空间中,DataGrid
它以全尺寸呈现自身,并显示其所有子项。
看起来没有简单的解决方案。
但我什至想要一个解决方法。也许以某种方式限制外部的虚拟ScrollViewer
空间?
外部作品的虚拟化,ListBox
但内部作品DataGrid
没有。可能是因为外部ListBox
包含ScrollViewer
内部:
提供了一个关于
ScrollViewer
其子内容的窗口。问题是子内容被赋予了无限的虚拟空间。在这个虚拟空间中,DataGrid
它以全尺寸呈现自身,并显示其所有子项。
看起来没有简单的解决方案。
但我什至想要一个解决方法。也许以某种方式限制外部的虚拟ScrollViewer
空间?
我不确定 ScrollViewer 是第一个受到指责的人。ListBox 使用具有垂直方向的 StackPanel 作为 ItemsPanel。垂直 StackPanel 不限制子元素的高度。
而不是更改容器空间,而是通过设置限制 DataGrid 大小DataGrid.MaxHeight
,并且 StackPanel 不会给它比该限制更多的高度。然后 ScrollViewer 将被限制为所有 DataGrid 的总大小。
刚刚在DataGrid 虚拟化中的 DataGrid 中找到了类似的答案
你可以尝试修复
height
内部的datagrid
。这样,只有其中一部分会在启用滚动的情况下显示。这将允许内部虚拟化,datagrid
因为一次只渲染一部分,其余部分将在滚动期间动态渲染,这将提高datagrid's
加载速度。
如果有帮助,请通过上面的链接并支持他的回答