WPF VirtualizingStackPanel 以提高性能

标签 wpf performance virtualization stackpanel

我想要一个关于如何为 ItemsControl 实现虚拟化堆栈面板的简单描述。数据绑定(bind)到 ObservableCollection在我的 MVVM 中。

我有一个 ItemsControl选项卡控件中每个选项卡的实例,当 ItemsControl 时切换选项卡变得非常慢变大。

我可以做些什么来加快应用程序的速度?

我打开了一个 WPF 分析器,看到每个选项卡的 ItemsControl 中显示的每个元素(这是一个自定义用户控件)都有自己的 ContentPresenter .因此,我的 ObservableCollection 中基本上有 100 位内容演示者都在为 100 个项目运行。在 MVVM 中。这是正确的吗?我该如何优化?

最佳答案

有两种技术可能会有很大帮助。 Bea Stolnitz 在她的 blog 上对这两者都进行了很好的描述。 .

第一个是UI Virtualization
第二个是Data Virtualization

在 UI 虚拟化中,您使用诸如 VirtualizingStackPanel 之类的东西来使 UI 绘制更少的东西。

数据虚拟化可确保当您只显示 100 个对象时不会将 100 万个对象带入内存。

因此,UI 虚拟化最大限度地减少了绘制的事物的数量,而数据虚拟化则最大限度地减少了可以绘制的事物的数量。

希望有帮助

关于WPF VirtualizingStackPanel 以提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389769/

相关文章:

linux - 虚拟 CPU 如何映射到物理内核?

android - 为什么 Android 模拟器的嵌套虚拟化非常慢?

wpf - 将 ViewModel 上的方法附加到 WPF 中的事件

linux - 这些磁盘读取从哪里来?

wpf - 如何在构建时使 .dll 和其他文件远离更深文件夹中的 .exe 文件?

java - 保留已完成工作项顺序的多线程执行

javascript - 如何提高 rails 中 coffeescript 的执行速度?

linux - VT 在 BIOS 中设置但未在操作系统上显示 vmx CPU 标志

c# - 如何计算 WPF 可视元素的逻辑宽度?

.net - WPF 错误 CS0433