【问题标题】:How does VirtualizingStackPanel decide when to unload (dispose?) of virtualized controls?VirtualizingStackPanel 如何决定何时卸载(处置?)虚拟化控件?
【发布时间】:2011-01-25 16:30:47
【问题描述】:

我正在使用 ItemsControl 在其 ControlTemplate 中使用 VirtualizingStackPanel。在某种程度上,我已经让虚拟化工作了。我已将调试语句放入 DataTemplate 中控件的 Loaded 和 Unloaded 事件处理程序中,但在控件消失后它们不会立即卸载。有没有办法强制这种行为?

【问题讨论】:

    标签: wpf controltemplate itemscontrol virtualizingstackpanel


    【解决方案1】:

    您可能会碰巧将 VirtualizationMode 设置为 Recycled。 VirtualizingStackPanel.cs 的源代码中有 cmets 表明 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

    【讨论】:

    • 非常感谢您提供的源链接,我一直只是在网上四处寻找它的碎片,完全没有意识到我可以从 Microsoft 获得全部内容!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2012-02-14
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多