真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SilverlightVirtualizationOverview

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

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

如下圖所示是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是通過(guò)VirtualizingStackPanel來(lái)實(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主要是通過(guò)PagedCollectionView實(shí)現(xiàn),PagedCollectionView提供分組、排序、過(guò)濾等許多功能,使用非常靈活、方便,其核心思想就是內(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


當(dāng)前標(biāo)題:SilverlightVirtualizationOverview
網(wǎng)站地址:http://weahome.cn/article/gjepph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部