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版本发布的列表框虚拟化。 那是对的吗?列表框是否存储为默认情况下虚拟化的可观察集合?
答案 0 :(得分:3)
默认情况下,Ui是虚拟化的 - 因此列表框会重复使用列表项的datatemplates,并且只渲染实际滚动到视图中的列表项。
但是,如果使用observablecollection,则数据不会虚拟化。
因此,如果您有1,000,000个项目的列表,那么所有项目都将在内存中,但只会创建和绘制其中一些项目的ui。
要虚拟化数据,您还需要实现自定义ilist,可能还支持inotifycollectionchanged。例如,这种实现可能会使用SQLite只是通过滚动来加载数据项。