Разница между EnableRowVirtualization WPF DataGrid и VirtualizingStackPanel.Свойства IsVirtualizing

там почти нет информации о влиянии настройки;

VirtualizingStackPanel.IsVirtualizing="True" 

и

EnableRowVirtualization="True" EnableColumnVirtualization="True". 

может кто прояснит, в чем разница?

кроме того, в качестве дополнительного бонуса, может ли кто-нибудь уточнить, действительно ли EnableRowVirtualization и EnableColumnVirtualization делают что-либо в сетке 3.5, поскольку документация MSDN только перечисляет эти свойства обратно в 4.0, но они определенно существуют в 3.5?

спасибо.

1 ответов


и IsVirtualizing и EnableRowVirtualization/EnableColumnVirtualization работайте на таком же принципе, который что детали визуализированы только когда нужно и контейнеры повторно использованы.

по сути,Panel (или Grid) отслеживает то, что видно и если это изменилось, он использует внутренний класс 'ItemContainerGenerator', чтобы размер и построить новые предметы (http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator.aspx).

мотивация для обоих заключается в том, что контейнеры генерируются только по требованию, что экономит память и повышает производительность.

о том, почему есть два:Panel предназначен для расширения только в одном направлении, горизонтальном или вертикальном; поэтому они реализовали одно прикрепленное свойство для него. А Grid, С другой стороны, простирается в двух измерениях, поэтому они реализовали свойство для каждого измерения.

другая разница академическая:IsVirtualizing - Это присоединенное свойство, где его аналоги для Grid родные свойства. Понятия не имею, почему они выбрали эту разницу...

соответствующие ссылки http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.enablerowvirtualization(v=vs. 100).aspx и http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel.isvirtualizing.aspx