Разница между 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