這篇博客將介紹WPF中的虛擬化技術。
1. Data Virtualization 通常情況下我們說數據虛擬化是指數據源沒有完全加載,僅加載當前需要顯示的數據呈現給用戶。這種場景會讓我們想到數據分頁顯示,當需要特定頁面的數據時,根據頁數請求相應數據。
WPF沒有提供對Data Virtualization原生態(tài)的支持,當時我們可以使用Paging相關技術來實現。在我先前的博客WPF 實現 DataGrid/ListView 分頁控件中有介紹。
2. UI Virtualization 是針對數據容器渲染數據項的一個優(yōu)化。舉個例子,一個ListView/ListBox控件中有10000個Item,但是可見的只有10個,那么此時只渲染并顯示這10個Item,剩余的9990個Item不實例化和顯示。這樣可以提高程序的性能。
WPF中VirtualizingStackPanel容器是實現了UI Virtualization的容器,VirtualizingStackPanel也是ListBox/ListView的默認數據容器。
下面通過一個例子來展示開啟UI 虛擬化和關閉UI 虛擬化對程序性能產生的影響。
<ListView x:Name="VirtualizationListView" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsVirtualizing="True"/>
public MainWindow() { InitializeComponent(); this.Loaded += delegate { List<string> items = new List<string>(); for (int i = 0; i < 10000; i++) { items.Add(string.Concat("item", i)); } &nbs