VirtualizingStackPanel如何决定何时卸载(处置?)虚拟化控件?

时间:2011-01-25 16:30:47

标签: wpf controltemplate itemscontrol virtualizingstackpanel

我在ControlTemplate中使用VirtualizingStackPanel处理ItemsControl。在某种程度上,我的虚拟化工作正在进行中。我已将调试语句放在我的DataTemplate中的控件的Loaded和Unloaded事件处理程序中,但是在控件退出视图后它们不会立即卸载。有没有办法强迫这种行为?

1 个答案:

答案 0 :(得分:2)

您可能有幸将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