当前位置: 首页 > news >正文

【实战指南】基于DevExpress轻量化主题实现WPF应用性能升级

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

如果您的下一个基于DevExpress的(经典主题的)WPF应用程序加载速度快了一倍?如果这可以通过一个简单的主题改变来实现呢?

通过从经典的DevExpress主题切换到轻量级的DevExpress WPF主题,您可以提高启动速度,减少内存消耗,并增强整体响应能力。在这篇文章中,我们将概述轻量级主题的好处和更新应用程序时需要考虑的关键因素,并向您展示如何将轻量级WPF主题合并到项目中。

点击获取DevExpress WPF v24.2正式版

应用程序启动

DevExpress官方在v23.2发布周期中引入了轻量级主题,与v23.1中的经典主题相比,轻量级主题提供了以下启动性能改进:

界面控件DevExpress中文使用教程

注意:实际的性能增益将根据.NET版本,是否使用Ngen或ReadyToRun,以及其他特定于应用程序的因素而变化。

为了实现这些改进,官方技术团队彻底检查了WPF主题的实现,并进行了以下优化:

  • 重组资源字典以减少搜索深度。
  • 删除了默认DeepBlue主题中不必要的部分。
  • 重新组织主题键来使用更少的类并减少JIT编译。
  • 增强了从DevExpress.Images库加载图像的缓存。

这些增强减少了与JIT初始化、XAML解析和资源加载相关的时间(为了进一步减少启动时间,考虑在应用程序中启用多核JIT和ReadyToRun)。

视图切换

除了启动时间之外,轻量级主题优化还有助于提高视图切换性能。正如您所期望的那样,用户现在可以在第二次打开视图时更快地与DevExpress的UI控件进行交互。

界面控件DevExpress中文使用教程

有了这个改变,您可以期待更快的标签切换、导航、面板对接/卸载,以及增强的应用响应能力。

内存使用情况

因为我们现在使用更少的XAML资源,轻量级主题消耗更少的内存(RAM和本地磁盘使用)。

界面控件DevExpress中文使用教程

有效的内存管理有助于减少性能问题并降低笔记本电脑等设备的功耗,这一点在旧设备上尤其重要,因为当RAM不足时,操作系统可以在本地磁盘上创建交换文件。

由于所有轻量级主题都共享多个XAML资源,因此我们将它们组合成一个只需要11 MB空间的程序集(相比之下,在一组类似的经典主题中需要10个程序集,总共72 MB空间)。

简化调色板颜色访问

除了性能和内存增强之外,轻量级主题还简化了调色板颜色的使用。要在应用中引用主题颜色,只需在ThemeResource扩展中指定颜色名称:

<Border BorderBrush="{dxci:ThemeResource ThemeKey='Brush.Border'}"/>

您还可以根据当前应用的主题指定不同的颜色:

<Border BorderBrush="{dxci:ThemeResource ThemeKey='Brush.Border,
Win11Light=Brush.Custom.Red'}" />

通过引用默认颜色,您可以在应用中同步DevExpress/其他UI元素的外观。

升级路径到轻量级主题

要激活轻量级主题,添加DevExpress.Wpf.ThemesLW包,并在应用程序启动时调用以下代码:

CompatibilitySettings.UseLightweightThemes = true;
ApplicationThemeHelper.ApplicationThemeName = LightweightTheme.Win11Light.Name;

如果您定制了经典主题,请注意以下内容:

  • 轻量级主题不支持DevExpress WPF主题设计器。如果您主要使用主题设计器进行颜色自定义,则可以使用自定义调色板覆盖颜色。此技术允许您指定大多数主题颜色,而无需构建新的程序集。对于更复杂的自定义,可以使用内置控件API或修改主题资源。
  • 与经典主题相比,轻量级主题资源具有不同的关键字名称。如果您已经覆盖了应用程序中的经典资源,它们中的大多数应该适用于轻量级主题,但可能需要进行微小的修改。例如,ThemeName属性不能用于旧的主题键。

切换到轻量级主题应该很简单,但是即使您选择继续使用经典主题,也要考虑升级到v23.2或更新版本,因为该版本也提高了经典主题的性能。与v23.1相比,您可以期待高达30%的启动性能改进。

未来更新

官方将在未来的发布周期中继续致力于性能增强(我们期望在v25.1发布周期中优化WPF富文本和字体编辑器中的字体加载性能)。

相关文章:

  • React类的生命周期
  • Ajax入门
  • C#进阶-ASP.NET网站会话固定漏洞的解决
  • 在云平台上用Claude 3.7 AI代理自动化电脑图形界面点击操作做表格
  • 05 MP4解码AAC + 格式知识
  • Python刷题:流程控制(上)
  • 【Kubernetes】Kube Proxy 如何帮助 Pod 之间通信?Kube-Proxy 实践案例
  • 我爱学算法之——滑动窗口攻克子数组和子串难题(上)
  • 网页复印机:只需一个网址,一键克隆任何网站!(可根据需求生成/优化相关代码)
  • [操作系统] 进程间通信:匿名管道原理与操作
  • js逆向-下载某音乐
  • Spring Cloud Alibaba Nacos 2023.X 配置问题
  • 人工智能_大模型097_TRAE_AI开发工具_企业级项目开发---人工智能工作笔记0242
  • 基于SpringBoot+Vue的大学校园志愿者管理系统+LW示例参考
  • 自动化测试工具-Playwright介绍和快速实例
  • Redis 主从架构与哨兵高可用方案实操
  • 谈谈 TypeScript 中的模块系统,如何使用 ES Modules 和 CommonJS 模块?
  • 高斯数据库和ORCLE、mysql数据库的区别
  • 安装并使用conda(宏观版)
  • 【模拟】从 0 到 1:模拟算法的深度剖析与实战指南
  • 受贿2.61亿余元,陕西省政协原主席韩勇一审被判死缓
  • 以色列称“将立即允许恢复”人道主义物资进入加沙
  • 《缶翁的世界》首发:看吴昌硕等湖州籍书画家的影响
  • 俄外长与美国务卿通电话,讨论俄美接触等问题
  • 外交部部长助理兼礼宾司司长洪磊接受美国新任驻华大使递交国书副本
  • 王伟妻子人民日报撰文:81192,一架永不停航的战机