Как VirtualizingStackPanel решает, когда выгрузить (утилизировать) виртуализированные элементы управления?
Я работаю с ItemsControl, используя VirtualizingStackPanel в его ControlTemplate. В какой-то степени у меня работает виртуализация. Я поместил отладочные операторы в обработчики событий Loaded и Unloaded для элементов управления в моем DataTemplate для элементов, но они не выгружаются сразу после того, как элементы управления выходят из поля зрения. Есть ли способ заставить это поведение?
1 ответ
Возможно, вам повезет, установив VirtualizationMode в Recycled. В исходном коде для VirtualizingStackPanel.cs есть комментарии, которые указывают, что режим Recycled немедленно очищает средства визуализации (вместо того, чтобы делать это в фоновом режиме):
//
// Delayed Cleanup is used when the VirtualizationMode is standard (not recycling) and the panel is scrolling and item-based
// It chooses to defer virtualizing items until there are enough available. It then cleans them using a background priority dispatcher
// work item
//
Обратите внимание, вы можете найти полный исходный код VirtualizingStackPanel здесь: