博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[WPF]WPF Data Virtualization和UI Virtualization
阅读量:6122 次
发布时间:2019-06-21

本文共 1154 字,大约阅读时间需要 3 分钟。

原文:

这篇博客将介绍WPF中的虚拟化技术。

1. Data Virtualization 通常情况下我们说数据虚拟化是指数据源没有完全加载,仅加载当前需要显示的数据呈现给用户。这种场景会让我们想到数据分页显示,当需要特定页面的数据时,根据页数请求相应数据。

WPF没有提供对Data Virtualization原生态的支持,当时我们可以使用Paging相关技术来实现。在我先前的博客中有介绍。

2. UI Virtualization 是针对数据容器渲染数据项的一个优化。举个例子,一个ListView/ListBox控件中有10000个Item,但是可见的只有10个,那么此时只渲染并显示这10个Item,剩余的9990个Item不实例化和显示。这样可以提高程序的性能。

WPF中VirtualizingStackPanel容器是实现了UI Virtualization的容器,VirtualizingStackPanel也是ListBox/ListView的默认数据容器。

下面通过一个例子来展示开启UI 虚拟化和关闭UI 虚拟化对程序性能产生的影响。

public MainWindow(){    InitializeComponent();    this.Loaded += delegate    {        List
items = new List
(); for (int i = 0; i < 10000; i++) { items.Add(string.Concat("item", i)); } this.VirtualizationListView.ItemsSource = items; };}

此时当通过Scrollbar滚动时,内存的波动不明显。

VirtualizingPanel.VirtualizationMode="Recycling"表示不循环实例化新的Item,例如Item1--Item20此时可见,拖动滚动条到Item100,再从Item100返回至Item1--Item20时,这时候Item1--Item20不会被重新实例化。默认情况下 VirtualizingPanel.VirtualizationMode="Standard"。在ListView进行滚动时,内存会用增加。

当关闭UI虚拟化之后,内存的变化非常显著,因为程序初始化时就将这10000条数据全部在ListView中实例化出来了。

当遇到上述场景时,可以合理的使用虚拟化技术来提高程序的性能。

感谢您的阅读。

转载地址:http://lowua.baihongyu.com/

你可能感兴趣的文章
Linux磁盘管理和文件系统管理
查看>>
从一个
查看>>
MongoDB 第三周作业——用java操作MongoDB之删除数组中的元素
查看>>
三、基于802.1x+AD+NPS+DHCP动态下发VLAN配置 (第3篇、添加角色NPS并设置)
查看>>
Windows开启SNMP服务----Win7
查看>>
体重档案应用客户端源码
查看>>
在linux中添加ftp用户,以及修改FTP默认端口号
查看>>
N26-第一周作业
查看>>
4月11日中高项作业
查看>>
华为交换机AAA特性与思科ACS对接
查看>>
二:Unit 8
查看>>
TortoiseSVN客户端重新设置用户名和密码
查看>>
nagios邮件报警配置
查看>>
Java 生产条形码代码
查看>>
python web开发-flask连接sqlite数据库
查看>>
Zxing二维码扫描
查看>>
MMU的作用
查看>>
决心书
查看>>
zookeeper的图形化展示
查看>>
Vue-router重修01
查看>>