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" />

 

posted @ 2016-06-21 11:26  cnblogs1_1  阅读(1355)  评论(0)    收藏  举报