91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Silverlight Virtualization Overview

發布時間:2020-07-06 18:03:17 來源:網絡 閱讀:270 作者:hamu01 欄目:編程語言

當ListBox使用StackPanel作為容器時,如果數據源包含大量數據時,每一條數據都要創建可視化的Item來承載數據,創建這些容器就需要消耗很多時間和內存,另外滾動也非常慢,因為需要計算所有這些Item的大小和位置

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

如果我們將ListBox的ItemsPanel修改為StackPanel會如何呢?下圖是修改為StackPanel后IE的內存使用情況,此時滾動已經非常緩慢:

Silverlight Virtualization Overview

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

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

UI virtualization

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

Data virtualization

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

其他

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

參考資料

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

齐河县| 尉氏县| 汉源县| 界首市| 上高县| 德钦县| 德格县| 宁都县| 瑞金市| 阿鲁科尔沁旗| 调兵山市| 辽阳市| 扎兰屯市| 望谟县| 宁波市| 延长县| 临清市| 花莲市| 富顺县| 满洲里市| 新野县| 华坪县| 延庆县| 洪雅县| 瓮安县| 郧西县| 上思县| 清远市| 双牌县| 博爱县| 平舆县| 瓦房店市| 湟源县| 黎平县| 上栗县| 青阳县| 喀喇沁旗| 原平市| 西充县| 正定县| 新乡市|