WPF提高程序关于大数据展示性能(利用附加属性实现)----虚拟化 、 项容器再循环 、 缓存长度 、 延迟滚动
虚拟化包含:UI虚拟化和数据虚拟化
UI虚拟化框架已经提供,数据虚拟化需要自己进行添加
UI虚拟化示例:
<TreeView VirtualizingStackPanel.IsVirtualizing="True"/>
数据虚拟化示例(链接):
已失效
项容器再循环:
如果启用项容器再循环,ListBox控件只保存少量的ListBoxItem对象存活,并当滚动时通知新数据加载这些ListBoxItem对象,从而重复使用它们。
<ListBox VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.IsVirtualizing="True" />
缓存长度:
VirtualizingStackPanel创建几个超过其显示范围的附加项,这样,在滚动的时候,可以立即显示这些项。
注:有必要指出,附加项的缓存用背景来填充,这意味着VirtualizingStackPanel将立即显示创建的可见项集。此后,VirtualizingStackPanel将开始在优先级较低的后台线程上填充缓存,因此不能锁定应用程序。
<ListBox VirtualizingStackPanel.CacheLength="1"
VirtualizingStackPanel.CacheLengthUnit="Page"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.IsVirtualizing="True" />
滚动延迟:
为了提升滚动性能,可开启延迟滚动特性,VirtualizingStackPanel.ScrollUnit默认为基于项的滚动,也可基于像素滚动。
<ListBox ScrollViewer.IsDeferredScrollingEnabled="True"
VirtualizingStackPanel.ScrollUnit="Pixel"
VirtualizingStackPanel.CacheLength="1"
VirtualizingStackPanel.CacheLengthUnit="Page"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.IsVirtualizing="True" />

浙公网安备 33010602011771号