WPF 列表开启虚拟化的方式

简介: 正确开启虚拟化的方式 列表如ListBox,ListView,TreeView,GridView等,开启虚拟化 ScrollViewer设置CanContentScroll=True 直接在模板中,设置CanContentScroll="True" 如模板中未设置CanContentScroll属性,可以在列表添加属性ScrollViewer.CanContentScroll="True"。

正确开启虚拟化的方式

列表如ListBox,ListView,TreeView,GridView等,开启虚拟化

  1. ScrollViewer设置CanContentScroll=True
    • 直接在模板中,设置CanContentScroll="True"
    • 如模板中未设置CanContentScroll属性,可以在列表添加属性ScrollViewer.CanContentScroll="True"。
    • 注意:如果在模板中设置CanContentScroll="False",然后在列表中设置附加属性ScrollViewer.CanContentScroll="True",结果是无法设置成功的!究其原因,是附加属性无法更改原本已经设置了的属性值。
  2. VirtualizingPanel.IsVirtualizing="True" 

其它无法开启虚拟化的原因

  • 列表样式中,设置了OverridesDefaultStyle=“True”。---覆盖了默认样式
  • 列表模板ControlTemplate中,ItemsPresenter之上没有ScrollViewer这一容器

虚拟化其它注意点

  • 滚动单元设置。VirtualizingPanel.ScrollUnit="Pixel" 像素滚动,比VirtualizingPanel.ScrollUnit="Item"物理单元滚动,列表的滚动范围更小。
  • VirtualizationMode创建可见项的项容器。VirtualizingStackPanel.VirtualizationMode="Recycling",列表绑定大数据时,显示的速度和流畅性,稍微比VirtualizationMode="Standard"快那么一点。

虚拟化滚动介绍,请见我的另一博客:WPF 列表虚拟化时的滚动方式

     

关键字:虚拟化

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
目录
相关文章
|
7月前
|
缓存 C# 虚拟化
WPF列表性能提高技术
WPF数据绑定系统不仅需要绑定功能,还需要能够处理大量数据而不会降低显示速度和消耗大量内存,WPF提供了相关的控件以提高性能,所有继承自`ItemsControl`的控件都支持该技术。
|
C# 虚拟化 索引
【WPF】UI虚拟化之------自定义VirtualizingWrapPanel
原文:【WPF】UI虚拟化之------自定义VirtualizingWrapPanel 前言 前几天QA报了一个关于OOM的bug,在排查的过程中发现,ListBox控件中被塞入了过多的Item,而ListBox又定义了两种样式的ItemsPanelTemplate。
2034 0
WPF 获取列表中控件的同时,选中其所在行
WPF 获取列表中控件的同时,选中其所在行
|
C# 虚拟化 容器
WPF之UI虚拟化
原文:WPF之UI虚拟化 在WPF应用程序开发过程中,大数据量的数据展现通常都要考虑性能问题。有下面一种常见的情况:原始数据源数据量很大,但是某一时刻数据容器中的可见元素个数是有限的,剩余大多数元素都处于不可见状态,如果一次性将所有的数据元素都渲染出来则会非常的消耗性能。
1032 0
|
C# C++
WPF - Group分组对ListBox等列表样式的约束
原文:WPF - Group分组对ListBox等列表样式的约束   在做WPF主题支持时,出现一个分组引起的莫名错误,可是折腾了我一番。在没有使用样式时,列表分组很正常,使用了别人写的ListBox列表样式后,发现GroupItem分组区没有内容,是空的,本篇把这一问题的解决过程给大家说一下,做主题时可以注意分组对列表样式的限制了。
1642 0
|
API C# Windows
WPF 4 开发Windows 7 跳转列表(JumpList)
原文:WPF 4 开发Windows 7 跳转列表(JumpList)      在之前写过的《Windows 7 任务栏开发系列》中我们通过Visual Studio 2008 借助微软提供的Windows API Code Pack 对应用程序的任务栏进行开发,即将到来的Visual Studio 2010 为我们提供了更方便的开发方式,新版本的WPF 4 只需要通过XAML 代码即可实现Windows 7 任务栏的特性。
904 0
|
大数据 C# 虚拟化
WPF 列表开启虚拟化的方式
原文:WPF 列表开启虚拟化的方式 正确开启虚拟化的方式 列表如ListBox,ListView,TreeView,GridView等,开启虚拟化 ScrollViewer设置CanContentScroll=True 直接在模板中,设置CanContentScroll="True" 如模板中未设置CanContentScroll属性,可以在列表添加属性ScrollViewer.CanContentScroll="True"。
937 0
|
C# 虚拟化 自然语言处理
WPF中ItemsControl应用虚拟化时找到子元素的方法
原文:WPF中ItemsControl应用虚拟化时找到子元素的方法  wpf的虚拟化技术会使UI的控件只初始化看的到的子元素, 而不是所有子元素都被初始化,这样会提高UI性能。
1852 0
|
C# 虚拟化 缓存
WPF 列表虚拟化时的滚动方式
原文:WPF 列表虚拟化时的滚动方式 ListBox的滚动方式 分为像素滚动和列表项滚动 通过ListBox的附加属性ScrollViewer.CanContentScroll来设置。因此ListBox的默认模板中,含有ScrollViewer,ScrollViewer下存放列表内容  而CanContentScroll,true支持逻辑单元(Item),false支持物理单元(像素)。
1225 0
|
11月前
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
879 0