WPF DataGrid 的 EnableRowVirtualization 和 VirtualizingStackPa
本文关键字:VirtualizingStackPa EnableRowVirtualization DataGrid WPF | 更新日期: 2023-09-27 18:32:44
关于设置影响的信息;
VirtualizingStackPanel.IsVirtualizing="True"
和
EnableRowVirtualization="True" EnableColumnVirtualization="True".
有人可以澄清一下有什么区别吗?
另外,作为额外的好处,任何人都可以澄清EnableRowVirtualization 和 EnableColumnVirtualization 是否真的在 3.5 网格上做任何事情,因为 MSDN 文档只列出了这些属性回到 4.0,但它们肯定存在于 3.5 中?
谢谢。
IsVirtualizing
和 EnableRowVirtualization
/EnableColumnVirtualization
都遵循相同的原理,即仅在需要时可视化项目,并且重复使用容器。
本质上,Panel
(或Grid
(跟踪可见的内容,如果更改,它使用内部类'ItemContainerGenerator'
来调整和构建新项目(https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.itemcontainergenerator(。
两者的动机是容器仅按需生成,从而节省内存并提高性能。
至于为什么有两个:Panel
被设计为只在单个方向上扩展,要么水平,要么垂直;所以他们为它实现了单个附加属性。 另一方面,Grid
在二维中扩展,因此他们为每个维度实现了一个属性。
另一个区别是学术性的:IsVirtualizing
是一个附加属性,而Grid
的对应项是本机属性。 不知道他们为什么选择这种差异......
相关链接 https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.datagrid.enablerowvirtualization https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizingstackpanel.isvirtualizing