三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

WPF UI 还是 .NET MAUI?跨平台选型前先看这三个场景

WPF UI 还是 .NET MAUI?跨平台选型前先看这三个场景

WPF UI 还是 .NET MAUI?跨平台选型前先看这三个场景

【免费下载链接】wpfuiWPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.项目地址: https://gitcode.com/GitHub_Trending/wp/wpfui

老板拍板:新项目要上三端,Windows、macOS、手机一个不能少。我手里只有一套还在维护的 WPF 代码。这时有人抛来 WPF UI——一个给 WPF 套上 Fluent Design 体验的控件库,又有人推 .NET MAUI——微软官方跨平台框架。WPF UI 和 MAUI 到底选哪个?我不打算摆参数表,就按我实际跑过的三个场景跟你聊。

五分钟跑通第一个 Demo:先上手再下结论

别急着选,先动手。WPF UI 最快见效的入口是资源字典。新建一个 WPF 项目,在App.xaml里加两行:

<ui:ThemesDictionary Theme="Dark" /> <ui:ControlsDictionary />

保存、运行,你的窗口立刻变成 Fluent 风格,导航栏、卡片、按钮全换了一副面孔。想换个主题?把Dark改成Light就行。这套配置在官方文档 docs/documentation/getting-started.md 里有完整说明,照着抄即可。

体感结论:如果你的目标是"让现有 WPF 项目快速变现代化",WPF UI 的接入成本约等于零。它是增量改造,不是推倒重来。

场景一:做 Windows 管理后台,谁更省事?

我要做一个内部运营后台,表格、表单、侧边导航、任务栏进度,全在 Windows 上跑。这时候 WPF UI 的优势一下就出来了——src/Wpf.Ui/Controls/ 里的 NavigationView 复刻了 Windows 11 的侧边栏交互,FluentWindow 自带圆角和云母效果,任务栏进度条、系统托盘这些 Windows 专属能力,它全给你封装好了。

这张图是 WPF UI 官方示例应用 src/Wpf.Ui.Gallery/ 的截图,左侧导航、顶部搜索、卡片式入口一目了然。意思是:Windows 桌面该有的交互细节,它不用你去从零调。

那换 MAUI 呢?它能跑 Windows,但导航、窗口行为、系统集成都得迁就五套平台的最小公约数。如果你的用户 100% 是 Windows,这就是纯亏。

这个场景,选 WPF UI,没悬念。

场景二:客户要手机端,答案就变了

但问题来了。运营后台做完,客户转头说:加个手机端。这时候 WPF UI 帮不了你——它只认 Windows。你想让 iOS、Android 上也有同样的业务,唯一的选择就是 MAUI 那套"一份代码多端跑"。

代价也真实:控件要重新调,布局要适配不同屏幕,Windows 上那种精细的视觉效果在手机上得打折扣。做移动优先的消费级应用,MAUI 是绕不开的路;只为 Windows 写的业务,别硬跨平台。

场景三:深色模式,谁更懂系统?

我见过不少项目,深色模式是自己写布尔值控制的,切来切去总有控件漏网。WPF UI 的处理方式是直接监听系统:SystemThemeWatcher.Watch(this)一行代码,Windows 切浅色深色,应用跟着切,连系统主题同步的 API 都集中在 src/Wpf.Ui/Appearance/。配色用 DynamicResource 引用,主题切换时自动刷新,不用手动刷界面。

这属于"OS 级整合",MAUI 在 Windows 上暂时做不到这个颗粒度。如果你的应用要跟系统外观深度绑定,这一条就够你下决定了。

迁移前必须知道的 3 个坑

踩过坑才敢说真话,WPF UI 使用中有几件事提前知道能省半天时间:

  • 颜色资源记得用 DynamicResource 而不是 StaticResource,否则主题切换时部分控件不跟变,这是文档里反复强调的坑。
  • 旧项目里自绘的样式会跟主题打架。WPF UI 的控件有自己的默认样式,你之前硬编码的颜色、圆角、阴影要逐个检查,改造量比你想象的大。
  • 别指望三端一套代码。哪怕选了 MAUI,Windows 专属能力(任务栏、托盘)依然要写条件编译。跨平台从来不是免费的。

老项目升级还想看路径?docs/migration/v4-migration.md 里写了大版本迁移的注意点,动手前先读一遍。

一张清单,帮你对号入座

拿不准就看这几条:

  • ✅ 只做 Windows、要 Fluent 外观、要系统级集成 →WPF UI
  • ✅ 手里有存量 WPF 代码,想低成本现代化 →WPF UI
  • ✅ 要做企业级桌面工具、管理后台 →WPF UI
  • ✅ 必须同时上 iOS / Android / macOS →MAUI,别犹豫
  • ✅ 全新项目、移动优先、团队小 →MAUI更划算
  • ✅ 全平台都要,但 Windows 体验是核心卖点 → 混合:主端用 WPF UI,移动端单独做

我自己的倾向很明确:先问"用户在哪",再问"框架是谁"。用户只在 Windows,WPF UI 就是最优解,不用为不存在的需求买单。

想亲手跑一遍?直接 clone 仓库(地址https://gitcode.com/GitHub_Trending/wp/wpfui),samples/里有四套现成 Demo,Simple 那个五分钟能跑起来。跑完你会回来感谢自己花了这五分钟——毕竟,动手试永远比看十篇对比文章快。哪天你踩了新坑,欢迎回仓库提个 issue,大家一起填坑。

【免费下载链接】wpfuiWPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.项目地址: https://gitcode.com/GitHub_Trending/wp/wpfui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表