2012-09-26 48 views
4

在2012年8月,本文發佈了http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286406%28v=vs.92%29.aspx,其中討論了數據庫最佳實踐。默認情況下,WP7 Mango中的列表框是否被虛擬化?

在這篇文章中,提到的是在列表框中數據虛擬化必須啓用,並建議按照日期爲2010年8月

「有關啓用數據綁定列表框控件數據虛擬化的詳細信息的文章,請參閱Improving ListBox Performance in Silverlight for Windows Phone 7: Data Virtualization

但是我認爲listbox虛擬化默認情況下啓用了Mango版本中發佈的內容。 這是正確的嗎?是一個列表框數據綁定到默認虛擬化的可觀察集合?

回答

3

默認情況下,Ui是虛擬化的 - 所以列表框重用列表項的數據模板,並且只呈現實際滾動到視圖中的列表項。

但是,如果您使用的是observablecollection,那麼數據不是虛擬化的。

所以,如果你有一個1,000,000項目的清單,那麼他們都將在內存中,但只有少數人的UI會被創建和繪製。

爲了虛擬化數據,您還需要實現自定義的ilist,可能還需要支持inotifycollectionchanged。例如,這個實現可能會使用SQLite來根據滾動需要加載數據項。

+0

爲什麼可觀的收藏品突破虛擬化?我想添加項目添加到我的列表項目,所以我如何通知UI? – onmyway133

+2

你可以自己實現INotifyCollectionChanged - 沒有內存中的所有100000000項。還有其他問題,請開始新的問題 - 我不會回到這裏。 – Stuart

相關問題