.NET 桌面开发三国杀:老将不死,新王已立
如果你写过 C#,你一定绕不开桌面开发这个选项。
十几年了,.NET 桌面框架的牌桌上坐着的还是那几位老面孔:WinForms、WPF,以及近两年声量越来越大的 Avalonia UI。
有人说 WinForms 该退休了,有人说 WPF 被微软边缘化了,也有人说 Avalonia 才是未来。真相到底是啥?今天不聊源码,不贴配置,就聊聊这三个框架到底适合什么人、干什么事。
WinForms:你大爷还是你大爷

不管你服不服,WinForms 依然是很多工厂车间、医院系统、财务软件里的隐形霸主。
它的优势就一个字:稳。拖拖拽拽就能出一个能用的界面,对 Windows 系统底层的兼容性好得离谱。很多工控机上跑的 XP 系统,除了 WinForms 没第二个选择。
但问题也明显:UI 想做得好看太难了,4K 屏幕缩放惨不忍睹,跨平台更是想都别想。
它不会死,但它只活在 Windows 世界里,而且越来越像一件传家宝——好用,但不好意思拿出来见人。
WPF:Windows 平台的最后荣光

WPF 是微软给专业桌面应用开发者的一封情书。
XAML 写界面、MVVM 分离逻辑、数据绑定极其优雅——这套范式直到今天依然是桌面开发的最佳实践之一。你想要多炫的动画、多复杂的交互,WPF 都能给你。
但它的痛点也刺痛了很多人:它永远长不出 Windows 的围墙。
你的老板说一句“我们也支持一下 Mac 用户吧”,WPF 开发者就只能沉默。要么重写,要么上虚拟机,要么用那些半吊子的跨平台方案。
不是 WPF 不好,是时代变了。今天的用户要的不只是 Windows。
Avalonia UI:一个框架,所有平台

这才是今天的重头戏。
Avalonia UI 干了一件微软一直没干成的事:用 WPF 的开发方式,写出能跑在 Windows、macOS、Linux 上的应用。最新的 12.0 版本甚至把 iOS、Android 和 WebAssembly 也一并打包带走了。
对 WPF 开发者来说,这就是无缝衔接。你会的 XAML 语法、你熟悉的数据绑定、你依赖的 MVVM 模式,在 Avalonia 里几乎原样保留。有公司甚至通过 Avalonia XPF 把几百万行的老 WPF 项目直接搬到了 Mac 上跑。
而且它是 MIT 开源协议。你拿去商用、闭源、卖钱,一分钱不用交。
更让人安心的是,施耐德电气、Unity、JetBrains 这些巨头已经在生产环境里用上了。连微软自己的 MAUI 跨平台方案,都选择了 Avalonia 来补齐 Linux 和 WebAssembly 的短板。
官网和上手有多简单?
如果你有点动心,直接去 avaloniaui.net 看一眼。首页明晃晃地写着:支持 Windows、macOS、Linux、iOS、Android、WebAssembly,2025 年 Avalonia 项目的构建次数超过了 1.22 亿次,用它的项目有 210 万个。文档有完整中文版,新手跟着走一遍就能跑起来。
写 Avalonia 的体验,对 WPF 玩家来说不是零门槛,但绝对是成本最低的一条跨平台迁移路径。
装好 .NET SDK,执行:
dotnet new install Avalonia.Templates
dotnet new avalonia.mvvm -o MyApp
一个项目骨架很快就能起来。打开项目,第一眼的感觉是——这目录结构我见过。
打开 Views 目录里的 .axaml 文件,你会发现熟悉的味道基本都在:基础的 UI 描述方式和 WPF 高度一致。像 <TextBlock Text="{Binding Name}"/> 这种简单绑定可以直接照写,Grid、StackPanel、DockPanel 这些布局容器的使用方式也几乎不变。
但该有的差异,还是要有心理预期。
最明显的是样式系统。Avalonia UI 用的是类似 CSS 选择器的机制来匹配控件,比 WPF 的隐式样式更灵活,但写法和思路都不一样,需要适应一下。另外像 RelativeSource、DataTemplate 里的绑定表达式,也会有一些细节差异;再往下走到文件系统、系统 API 这些地方,因为涉及跨平台,通常要多做一层抽象处理。
所以更准确的说法是:
👉 一个 WPF 老手,用 Avalonia 搭一个中等复杂度的界面,半天跑起来没问题;
👉 但想把样式体系、控件定制、平台差异这些东西吃透,还是得花点时间认真过一遍文档。
好在文档本身写得还算清晰,整体踩坑成本比当年从 WinForms 切到 WPF 低得多——而且这次,你写的应用能跑出 Windows 了。
WinForms、WPF、Avalonia UI 核心区别一览
| 对比项 | WinForms | WPF | Avalonia UI |
|---|---|---|---|
| 跑在哪儿 | 只有 Windows | 只有 Windows | Windows、macOS、Linux、iOS、Android、Web |
| 怎么写界面 | 拖控件 / C# 代码 | XAML | XAML(跟 WPF 基本一样) |
| 适合谁 | 工控机、老系统、求稳 | Windows 专业应用、求好看 | 新项目、跨平台、WPF 老手不想重学 |
| 开源吗 | 部分 | 部分 | MIT 全开源,商用随便用 |
所以,结论是什么?
-
如果你在给一家工厂写设备上位机,WinForms 依然是最省心的选择。
-
如果你确定产品这辈子只服务 Windows 用户,WPF 依然能给你最好的 Windows 原生体验。
-
但如果你今天新起一个项目,或者想让你的老 WPF 应用多活几个平台——Avalonia UI 就是那个让你赢在未来的选择。
WPF 没死,WinForms 也没死。
但桌面开发的未来,已经不在 Windows 一棵树上吊着了。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)