【问题标题】:WP7 Listbox how UI virtualization workWP7 Listbox UI 虚拟化如何工作
【发布时间】:2012-11-14 11:24:02
【问题描述】:

我使用的 ListBox 有VirtualizingStackPanel,据说默认支持 UI 虚拟化。

但是,当我将我的 listStudent(类型为 ObservableCollection,其中有 5 个学生)设置为 ItemsSource 时,我的 Listbox。然后,每当用户滚动到末尾时,我就会将另外 5 个学生添加到我的 listStudent 中(当然 UI 也会收到通知)。但我看到消耗的内存不断增加。内存方面和StackPanel没什么区别

UI 虚拟化如何工作?向 listStudent 添加新项目时如何保持低内存?

【问题讨论】:

  • 操作系统预加载 3 个屏幕尺寸 (?)。您可以添加更多学生(例如 100 名)来看看差异吗?
  • @Ku6opr 我多次添加 5 个学生,所以当我的 listStudent.Count 超过 100 时,我向上滚动。 ListBox 虚拟化机制必须销毁那些不在屏幕中的 ListBoxItem。但它没有!

标签: windows-phone-7 memory-leaks observablecollection virtualizingstackpanel


【解决方案1】:

虚拟化意味着列表不构造你还没有滚动到的列表项。

因此您可以将测试代码放入项目的加载函数或使用的转换器代码中。你可以看看虚拟化是否有效

例如

您可以将转换器绑定到学生的姓名道具并记录它。然后您就知道该项目何时真正创建

【讨论】:

    【解决方案2】:

    确保您没有修改破坏 UI 虚拟化的 ListBox ItemsPanel

    【讨论】:

      【解决方案3】:

      Sheldon_Xiao on 已经指出了 MSDN 上的一些引用 helpfully explain UI virtualizartion

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2015-04-05
        • 1970-01-01
        相关资源
        最近更新 更多