几乎没有关于环境影响的信息;
VirtualizingStackPanel.IsVirtualizing="True"
and
EnableRowVirtualization="True" EnableColumnVirtualization="True".
有人可以澄清有什么区别吗?
另外,作为额外的好处,任何人都可以澄清 EnableRowVirtualization 和 EnableColumnVirtualization 是否实际上在 3.5 网格上执行任何操作,因为 MSDN 文档仅将这些属性列出回 4.0,但它们肯定存在于 3.5 中?
Thanks.
Both IsVirtualizing
and EnableRowVirtualization
/EnableColumnVirtualization
其运作原理相同,即物品仅在需要时才可视化,并且容器可重复使用。
本质上,Panel
(or Grid
)跟踪可见内容,如果发生更改,它会使用内部类,'ItemContainerGenerator'
,调整大小并构建新项目(https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.itemcontainergenerator https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.itemcontainergenerator).
两者的动机都是容器仅按需生成,从而节省内存并提高性能。
至于为什么有两个:Panel
设计为仅在单一方向(水平或垂直)延伸;所以他们为其实现了一个附加属性。 AGrid
另一方面,在二维上扩展,因此他们为每个维度实现了一个属性。
另一个区别是学术上的: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.datagrid.enablerowvirtualization and https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizingstackpanel.isvirtualizing https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizingstackpanel.isvirtualizing
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)