我正在使用具有VirtualizingStackPanel
的ListBox,据说默认支持UI虚拟化。
但是,当我将 listStudent (类型为ObservableCollection
,并且其中有5名学生)设置为ItemsSource
作为Listbox
。然后,每当用户滚动到最后,我将另外5名学生添加到我的 listStudent (当然还会通知UI)。但我发现消耗的内存不断增加。在内存方面与StackPanel
没有区别
UI虚拟化如何工作?将新项目添加到 listStudent 时如何保持低内存?
答案 0 :(得分:0)
虚拟化意味着列表不构造您尚未滚动到的列表项。
因此您可以将测试代码放入项目的加载函数或使用转换器代码。你可以看看虚拟化是否有效
例如
你可以将转换器绑定到学生的名字道具上,然后你可以记录它。然后你知道该项目何时创建
答案 1 :(得分:0)
确保您没有修改销毁用户界面虚拟化的ListBox
ItemsPanel
答案 2 :(得分:0)
Sheldon_Xiao on已在MSDN上指出helpfully explain UI virtualizartion
的一些参考资料