SilverlightVirtualizationOverview-創(chuàng)新互聯(lián)

當(dāng)ListBox使用StackPanel作為容器時(shí),如果數(shù)據(jù)源包含大量數(shù)據(jù)時(shí),每一條數(shù)據(jù)都要?jiǎng)?chuàng)建可視化的Item來承載數(shù)據(jù),創(chuàng)建這些容器就需要消耗很多時(shí)間和內(nèi)存,另外滾動(dòng)也非常慢,因?yàn)樾枰?jì)算所有這些Item的大小和位置

創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元南康做網(wǎng)站,已為上家服務(wù),為南康各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

如下圖所示是ListBox在默認(rèn)情況下加載10000個(gè)Gamer(只定義了Id和Name屬性)對(duì)象時(shí),IE的內(nèi)存使用情況,此時(shí)滾動(dòng)非常順暢:
Silverlight Virtualization Overview

如果我們將ListBox的ItemsPanel修改為StackPanel會(huì)如何呢?下圖是修改為StackPanel后IE的內(nèi)存使用情況,此時(shí)滾動(dòng)已經(jīng)非常緩慢:

Silverlight Virtualization Overview

295264k 對(duì) 56372k,大概在5倍左右的差距,很顯然ListBox默認(rèn)使用的ItemsPanel不是StackPanel,而且可以很好的處理大量的數(shù)據(jù)加載,我們不用做任何的額外處理

對(duì)于這類問題目前有兩種解決方案:

UI virtualization

最佳的一種解決方案,其核心思想就是延遲生成每個(gè)Item,只有這些Item滾動(dòng)到可視區(qū)域時(shí)才顯示這些Item,在Silverlight中UI virtualization是通過VirtualizingStackPanel來實(shí)現(xiàn)的,VirtualizingStackPanel計(jì)算哪些Item可見,然后只為這些可見Item創(chuàng)建UI元素,這樣實(shí)際創(chuàng)建的UI元素非常少,內(nèi)存消耗就少,每次滾動(dòng)時(shí),也不需要計(jì)算每個(gè)Item的大小和位置,只需要計(jì)算哪些Item可見,然后為這些Item創(chuàng)建UI元素就可以了,滾動(dòng)就非常順暢;VirtualizingStackPanel包含兩種模式:standard and recycling,standard模式就是每次Item進(jìn)入可視區(qū)域都會(huì)重新創(chuàng)建UI元素,而recycling模式則會(huì)重用之前已經(jīng)創(chuàng)建好的UI元素,使用該模式內(nèi)存消耗更少,滾動(dòng)更平滑

Data virtualization

其核心思想是不一次性加載所有數(shù)據(jù),只加載用戶可以看到的數(shù)據(jù),比如ListBox只加載滾到可視區(qū)域的數(shù)據(jù),在Silverlight中實(shí)現(xiàn)Data virtualization主要是通過PagedCollectionView實(shí)現(xiàn),PagedCollectionView提供分組、排序、過濾等許多功能,使用非常靈活、方便,其核心思想就是內(nèi)部維護(hù)所有Item的集合,這個(gè)集合不會(huì)和ItemsControl進(jìn)行綁定,將需要在界面中展示的那些數(shù)據(jù)包裝成另外一個(gè)集合,這個(gè)集合與ItemsControl進(jìn)行綁定,因?yàn)檫@個(gè)集合容量較小,所以實(shí)際上創(chuàng)建的UI元素非常少,節(jié)省內(nèi)存,具體使用方法請(qǐng)參考MSDN,這里不再贅述

其他

WPF中ScrollViewer提供了IsDeferredScrollingEnabled屬性支持Defer Scrolling,而Silverlight沒有暴露這個(gè)屬性不支持DeferScrolling

參考資料

http://www.silverlightshow.net/items/Virtualization-in-Silverlight-4-RC.aspx

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱:SilverlightVirtualizationOverview-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://bm7419.com/article2/hscoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站內(nèi)鏈、用戶體驗(yàn)、網(wǎng)站營(yíng)銷、品牌網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)