Как 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 здесь:

http://referencesource.microsoft.com/netframework.aspx

Другие вопросы по тегам