
Avalonia 跨平台 UI 迁移指南用一套 C# 和 XAML 覆盖 Windows、macOS 和 Linux【免费下载链接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI项目地址: https://gitcode.com/GitHub_Trending/ava/Avalonia你有一只想跑在三大桌面平台上的 .NET 应用又不想为每个系统重写界面。Avalonia 就是这个答案一套 C# 加 XAML 代码配合 Skia 渲染让你在 Windows、macOS、Linux以及 iOS、Android、WebAssembly上产出一致效果。这篇写给刚接触它的开发者看完就能动手。为什么需要 Avalonia先看它解决什么WPF 很强但它只跑在 Windows 上。你的应用一旦要上 macOS 或 Linux就得面临重写界面、维护两套代码库的代价。Avalonia 的思路不是再做一个 Web 化的壳而是把 WPF 那套你熟悉的 XAML、绑定、样式、MVVM 原样保留下来底层用Skia做统一渲染。同一套界面代码控件、布局、主题在多个平台复用原生交互体验输入、窗口、菜单等仍接平台能力生产级成熟度JetBrains、GitHub 等团队已在生产环境使用它不是 WPF 的 1:1 复制很多细节有改进。所以能直接跑要打个问号但迁移成本低是成立的。选型对比Avalonia 和几条替代路线先说结论如果你已经会 WPF 和 XAMLAvalonia 是迁移成本最低的跨平台选择。其他路线各有取舍见下表。方案复用现有 WPF 代码目标平台上手难度许可Avalonia高XAML 概念一致Win/macOS/Linux/iOS/Android/WASM低MIT 开源Avalonia XPF极高WPF 应用近乎零改动Win/macOS/Linux低商业按应用按平台计费WinForms 各平台壳低主要 Windows中开源如果你的存量就是 WPF、又只想要桌面三平台商业的 Avalonia XPF 值得评估想要开源、想覆盖移动端和 WebAssembly就选标准版 Avalonia。上手路线从环境到跑通第一个窗口环境三件套按平台各装各的.NET SDK仓库用global.json锁定了版本按它装IDEVisual Studio 2022/2026、Rider 都有官方支持VS Code 也有扩展平台工具macOS 要 XcodeLinux 要对应桌面依赖NuGet 装两个包就能起步Avalonia加Avalonia.Desktop。一个最小桌面应用的主入口核心是加载 XAML 再挂上主窗口仓库的 Sandbox 示例 就是最简模板App.axaml.cs里OnFrameworkInitializationCompleted设置MainWindow这一步是关键。核心能力拆解绑定、样式与 MVVM绑定语法和 WPF 基本一致。你写过{Binding}就会写 Avalonia 的数据流、双向绑定、更新触发器概念都保留。样式系统是它的强项。主题用Avalonia.Themes.Fluent现代 Fluent 风格或Avalonia.Themes.Simple支持暗黑模式、主题切换。ControlCatalog 的 Pages 目录 几乎每个控件都有一页可运行的演示照着改最快。MVVM 可以自带。仓库的 MiniMvvm 示例 用不到 30 行代码实现了一个ViewModelBase核心就是INotifyPropertyChanged加一个RaiseAndSetIfChanged帮助方法。你不必引入重型框架就能把视图和逻辑分开。踩坑与避坑三个最常见的坑坑一以为 XAML 命名空间和 WPF 完全相同。主命名空间是https://github.com/avaloniaui不是 WPF 的System.Windows那套。控件类大多落在Avalonia.Controlsusing时留意一下。坑二本地改源码却吃不到改动。直接CreateNugetPackages容易踩版本和跨平台打包macOS 专属的Avalonia.Native的坑。更省事的是用BuildToNuGetCache目标把改动以9999.0.0-localbuild版本直接推进本机 NuGet 缓存MSBuild 会自动识别。详见 docs/nuget.md。坑三跨平台 API 想当然。某些 Windows 专属能力在 macOS/Linux 上不存在得走 Avalonia 提供的跨平台替代接口。写平台相关代码前先确认该 API 是否在目标平台可用这比出 bug 再查快得多。下一步边看示例边动手别等全部理解才开始。按这个顺序推进先跑通 Sandbox改个窗口标题、加个按钮确认工具链通再对照 ControlCatalog 的 Pages把你要用的控件逐个看一遍需要 MVVM 就抄 MiniMvvm 的基类逻辑和界面彻底分开遇到构建和打包问题翻 docs/ 里的nuget.md、api-compat.mdAvalonia 把 WPF 的肌肉记忆延续到了全平台剩下的就是把它用熟。从跑通第一个窗口开始你的跨平台应用就有了地基。【免费下载链接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI项目地址: https://gitcode.com/GitHub_Trending/ava/Avalonia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考