Windows Phone 8中如何?列表觸底載入

來源:互聯網
上載者:User

【背景】

很多時候在做WP開發的過程中會遇到資料需要分頁擷取,根據微軟官方的推薦方式,建議實現為Market中類似的體驗,即滑動到列表的底部的時候載入更多的資料。

這一需求在早起WP7.1時代實現起來是很費勁的,需要藉助WP Toolkit 中的LongListSelector,而自從LLS被微軟扶正之後這一需求的實現有了更官方的方法。

【實現思路】

LLS傳承了Listbox UI虛擬化的特性,所謂UI虛擬化即列表資料來源中的資料不會一次性根據ItemTemplete將所有資料UI化,而是隨著列表的滑動,隨時將資料UI化,或者將UI化的資料釋放掉。舉例說明下更直觀:

比如,LLS資料來源中有1W條User類型的資料,記錄使用者資訊。LLS負責展示這1W條資料。假設一屏能顯示10條。那麼UI虛擬化的工作就是:

1、將30條(舉例的資料)User根據ItemTemplete繪製出對應的30個UI控制項

2、向下滑動看到第20條資料的時候,從資料來源中拿出20條繪製UI控制項,並將前20條的繪製出來的控制項釋放掉。

3、向下滑動看到第40條資料的時候,再從資料來源中拿出20條繪製UI控制項,並將前20條繪製出來的控制項釋放掉。

4、往上滑動重新回到第20條資料的時候,反向再進行一次繪製和釋放

以上UI虛擬化的概念瞭解後我們標題中的需求就很好實現了。

LLS定義了OnItemRealized事件,其作用簡單說:當LLS根據ItemTemplete繪製UI控制項時會觸發此事件,通知使用者當前繪製的是哪一個資料。

【具體程式碼分析】

根據這個定義我們實現的代碼如下:

解釋:

1、Offset 為距離資料來源中最後一項的位移量

2、IsLoading為相依性屬性,標識當前正在載入資料

3、當OnItemRealized事件觸發時,判斷當前Realized的Item是否為資料來源的倒數第二項,如果是,則認為需要載入新的資料,觸發DataRequest事件

如此一個簡單通用的"無盡列表"便實現了。

查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/

參考:

http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.longlistselector.itemrealized(v=vs.105).aspx

http://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e

完整代碼見:

https://gist.github.com/tianhonghui/6999984

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.