Silverlight &WPF 技巧(一)DataGrid虚拟化加速不自动开启?

本文探讨了Silverlight和WPF中DataGrid虚拟化的重要性。在数据量较大时,虚拟化能够显著提高渲染速度。默认情况下,VirtualizingStackPanel的虚拟化是开启的,但当高度设置为Auto时,虚拟化可能无法正常工作。通过设置VirtualizingStackPanel.IsVirtualizing为true可以强制开启虚拟化,但在某些情况下可能不起作用。ComboBox和ListBox的虚拟化也能提高性能。
摘要由CSDN通过智能技术生成

    在数据量大的情况下,DataGrid和ComboBox无法渲染或者渲染速度比较慢。

 首先我们来介绍下VirtualizingStackPanel 类(以下摘自MSDN)

         标准布局系统可以创建项容器并为每个与列表控件关联的项计算布局。 “虚拟化”是指一种技术,通过该技术,可根据屏幕上所显示的项来从大量数据项中生成用户界面 (UI) 元素的子集。 如果在可能只有少量元素显示在屏幕上时生成多个 UI 元素,则会对应用程序的性能产生负面影响。 VirtualizingStackPanel 会计算可见项的数量,并处理来自 ItemsControl(如 ListBoxListView)的 ItemContainerGenerator,以便只为可见项创建 UI 元素。

仅当 StackPanel 中包含的项控件创建自己的项容器时,才会在该面板中发生虚拟化。 可以使用数据绑定来确保发生这一过程。 如果创建项容器并将其添加到项控件中,则与 StackPanel 相比,VirtualizingStackPanel 不能提供任何性能优势。

VirtualizingStackPanel 是 ListBox 元素的默认项宿主。 默认情况下,IsVirtualizing 属性设置为 true。

当 IsVirtualizing 设置为 false 时,VirtualizingStackPanel 的行为与普通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值