Как VirtualizingStackPanel решает, когда выгрузить (утилизировать) виртуализированные элементы управления? - PullRequest
3 голосов
/ 25 января 2011

Я работаю с ItemsControl, используя VirtualizingStackPanel в его ControlTemplate. В какой-то степени у меня работает виртуализация. Я поместил отладочные операторы в обработчики событий Loaded и Unloaded для элементов управления в моем DataTemplate для элементов, но они не выгружаются сразу после того, как элементы управления перестают отображаться. Есть ли способ заставить это поведение?

1 Ответ

2 голосов
/ 26 января 2011

Возможно, вам повезет, установив 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

...