在WP7芒果中默认情况下列表框是否已虚拟化?

时间:2012-09-26 19:02:42

标签: windows-phone-7 windows-phone-7.1

2012年8月,本文发表http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286406%28v=vs.92%29.aspx,讨论了数据库最佳实践。

在本文中,提到必须启用列表框中的数据虚拟化,并建议遵循2010年8月的文章。

  

“有关在数据绑定ListBox控件上启用数据虚拟化的详细信息,请参阅Improving ListBox Performance in Silverlight for Windows Phone 7: Data Virtualization

但是我认为默认情况下会使用Mango版本发布的列表框虚拟化。 那是对的吗?列表框是否存储为默认情况下虚拟化的可观察集合?

1 个答案:

答案 0 :(得分:3)

默认情况下,Ui是虚拟化的 - 因此列表框会重复使用列表项的datatemplates,并且只渲染实际滚动到视图中的列表项。

但是,如果使用observablecollection,则数据不会虚拟化。

因此,如果您有1,000,000个项目的列表,那么所有项目都将在内存中,但只会创建和绘制其中一些项目的ui。

要虚拟化数据,您还需要实现自定义ilist,可能还支持inotifycollectionchanged。例如,这种实现可能会使用SQLite只是通过滚动来加载数据项。