news 2026/9/3 14:38:40

Avalonia 快速上手指南:用 C 和 XAML 构建跨平台 UI 应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Avalonia 快速上手指南:用 C 和 XAML 构建跨平台 UI 应用

Avalonia 快速上手指南:用 C# 和 XAML 构建跨平台 UI 应用

【免费下载链接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI项目地址: https://gitcode.com/GitHub_Trending/ava/Avalonia

同一套界面代码在 Windows、macOS、Linux 上都要能跑,是桌面应用开发里最现实的诉求之一。Avalonia 是一个 .NET 跨平台 UI 框架,让你用 C# 和 XAML 编写一次界面代码,就能在 Windows、macOS、Linux、iOS、Android 和 WebAssembly 上运行。本指南基于仓库当前源码,带你走完从安装到本地构建的基本路径。

一句话定位

Avalonia 常被视作 WPF 的精神续作:界面用 XAML 描述,逻辑用 C# 的 MVVM 模式组织,样式系统类似 WPF 但并非 1:1 复制。官方 README 说明它已成熟到可用于生产环境,Schneider Electric、Unity、JetBrains 等团队在用它。它适合从 WPF 迁移、或想统一多平台 UI 的 .NET 开发者。

特性速览

特性它做了什么谁需要关注
多平台目标一套代码覆盖 Windows、macOS、Linux,并支持 iOS、Android 与 WebAssembly(见 build/TargetFrameworks.props)所有使用者
XAML + MVVM界面声明式描述,样式可主题化,内置 Fluent、Simple 两套主题(src/Avalonia.Themes.Fluent/)界面开发者
NuGet 分发主包加平台包即可接入,无需从源码编译所有使用者
编辑器支持VS Code 扩展、Visual Studio 扩展、Rider 均提供模板、XAML 预览与代码补全(见 readme.md)日常写码的人
示例库 ControlCatalog数百个控件页面的演示应用,便于逐个试验控件行为新手查用法
API 兼容策略主版本内保持源码与二进制兼容,CI 自动做 API 校验,破坏性变更需团队审批关注升级风险的团队

上手走一遍

1. 安装 NuGet 包

最简单的方式是通过 NuGet 安装主包和桌面平台包,这是官方 README 给出的接入方式:

Install-Package Avalonia Install-Package Avalonia.Desktop

应用入口需要实现BuildAvaloniaApp()方法,它负责组装框架并选择平台后端:

public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure<App>() .UsePlatformDetect() .LogToTrace();

.UsePlatformDetect()会根据当前操作系统自动选择后端,跨平台项目通常只写这一份。想看控件效果,仓库里的 samples/ControlCatalog/ 是最直观的入口;想理解 MVVM 最小实现,可以看 samples/MiniMvvm/,它只有四个源文件。

2. 在 macOS 上配置原生库路径

macOS 平台的后端包含 Objective-C 原生组件,位于 native/Avalonia.Native/src/OSX/。如果你用 Xcode 单独编译了原生库,可以把产物路径注入应用,避免每次全量重编。AvaloniaNativePlatformOptions的用法在 docs/macos-native.md 中有完整说明:

.With(new AvaloniaNativePlatformOptions { AvaloniaNativeLibraryPath = "/path/to/Avalonia.Native.dylib" })

3. 从源码克隆构建

如果你需要自己构建,仓库地址为:

git clone https://gitcode.com/GitHub_Trending/ava/Avalonia

构建指令(Nuke 任务、原生库编译等细节)以仓库内的 docs/index.md 和官方文档为准;仓库要求 .NET 10 SDK(见 global.json)。

坑与注意事项

  • 不是 WPF 的完全替代:README 明确说它相似但不是 1:1 复制,迁移 WPF 代码时个别行为需要调整,可参考 docs/porting-code-from-3rd-party-sources.md。
  • 主版本升级有破坏性变更:README 指向了 Avalonia 11 到 12 的 breaking changes 文档。仓库当前的开发版号是 12.2.999(见 build/SharedVersion.props),生产环境请认准 NuGet 上的稳定版。
  • API 兼容只保证主版本内:官方策略是主版本内保持源码和二进制兼容,破坏性变更须审批(docs/api-compat.md),跨大版本升级前建议先看变更记录。
  • iOS、Android、WASM 属于扩展支持:README 描述中对 Android、iOS 和 WebAssembly 标注为 experimental 级别的表述见 build/SharedVersion.props 中的包描述,用于正式项目前建议先在示例上验证。
  • macOS 原生组件需要单独处理:改原生代码要么走AvaloniaNativeLibraryPath注入,要么全量重编,两条路径的取舍见 docs/macos-native.md。

收尾

日常使用以 NuGet 稳定包加 samples/ 中的示例为起点即可,深入开发再看 docs/index.md。贡献代码前先读 CONTRIBUTING.md,项目采用 MIT 许可(licence.md)。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 14:30:54

Python实现眼动数据可视化:从注视点轨迹到热力图的完整实战指南

简介&#xff1a;本资源是一套面向认知科学、人机交互与用户体验研究者的Python眼动数据分析工具包&#xff0c;聚焦注视点轨迹绘制与热图生成两大核心任务&#xff0c;解决眼动原始数据难以直观呈现、视觉行为模式难量化的问题。压缩包共5个文件&#xff08;3个核心Python模块…

作者头像 李华
网站建设 2026/9/3 14:24:21

SpringBoot校园二手电动车交易系统:毕业设计实战与源码解析

简介&#xff1a;这是一套面向计算机专业本科生的Java毕业设计实战资源&#xff0c;基于Spring Boot快速开发校园二手电动车交易平台&#xff0c;解决高校学生间闲置电动车高效流转与安全交易的实际需求。资源包含完整前后端源码、MySQL建库脚本、详细说明文档及毕业论文&#…

作者头像 李华
网站建设 2026/9/3 14:23:08

游戏高光时刻自动检测:从事件感知到内容生成的技术实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 14:22:53

python的图论工业场景模拟第五十篇:介度中心性与物流网络关键枢纽识别,任务:计算节点介度中心性,高频被路过的节点是物流瓶颈点,图建模说明:无向/有向图,nx.betweenness_central

介度中心性与物流网络关键枢纽识别&#xff1a;找出那条"必经之路"上的瓶颈"工厂物流 AGV 路径规划做完后&#xff0c;现场反馈&#xff1a;某段通道天天堵车&#xff0c;AGV 排队等通行&#xff0c;产线经常因为物料迟到而停线。我一开始以为是调度算法的问题&…

作者头像 李华