4

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

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

" 有关在数据绑定 ListBox 控件上启用数据虚拟化的更多信息,请参阅提高 Silverlight for Windows Phone 7 中的 ListBox 性能:数据虚拟化"

但是我认为默认情况下会启用列表框虚拟化,并在 Mango 版本中发布。那是对的吗?默认情况下,列表框数据是否绑定到虚拟化的可观察集合?

4

1 回答 1

3

默认情况下 Ui 是虚拟化的 - 因此列表框为列表项重用数据模板,并且仅呈现那些实际滚动到视图中的列表项。

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

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

要同时虚拟化数据,您需要实现自定义 ilist,可能还支持 inotifycollectionchanged。例如,此实现可能使用 SQLite 仅在滚动需要时加载数据项。

于 2012-09-26T19:12:33.157 回答