Avalonia 12 开发速览:侧边栏、原生菜单和自定义 dylib,这 3 处值得你提前上手
发布时间:2026/9/4 11:35:19 锦皓数字建站

Avalonia 12 开发速览侧边栏、原生菜单和自定义 dylib这 3 处值得你提前上手【免费下载链接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI项目地址: https://gitcode.com/GitHub_Trending/ava/AvaloniaAvalonia 是用 C# 和 XAML 编写桌面、移动端与 WebAssembly 应用的跨平台UI开发框架。当前仓库的主线版本为 12.2见 build/SharedVersion.props面向从 WPF 迁移过来或准备做跨平台 UI 的开发者。如果你还没搭过环境可以从 samples/ 里的示例项目入手。这次更新先扫一眼按对你写代码的实际帮助归纳主线代码里能直接受益的改动有这几条改动对你的好处SplitView 支持 4 种显示模式一个控件做出手机折叠、桌面展开的侧边栏无需自己写适配逻辑NativeMenuBar 导出系统级菜单菜单外观跟随各平台规范不用逐平台手写AvaloniaNativePlatformOptions.AvaloniaNativeLibraryPathmacOS 原生库改一行 Xcode 代码即可热替换不用整仓重编API 兼容性检查主版本内源码与二进制兼容由 CI 强制升级时心里有底逐个看新特性怎么用用 SplitView 搭出自适应侧边栏它是什么一个把窗口分成侧边栏 主内容的容器控件侧边栏的宽度、开合状态都由属性控制。解决什么痛点小屏时侧边栏占满整个内容区大屏时又浪费空间以往得自己监听窗口尺寸再切换布局。SplitView 通过DisplayMode属性内置了Overlay、CompactOverlay、Inline、CompactInline四种模式见 SplitViewDisplayMode.cs小屏时侧边栏浮在内容之上大屏时与内容并排。关键用法SplitView IsPaneOpenTrue DisplayModeOverlay PaneWidth240 SplitView.Pane StackPanel !-- 侧边栏内容 -- /StackPanel /SplitView.Pane StackPanel Margin16 !-- 主内容 -- /StackPanel /SplitView给应用挂一条系统级菜单栏它是什么NativeMenuBar把 XAML 里声明的菜单导出为操作系统原生的菜单而不是画在窗口里的普通控件。解决什么痛点macOS 应用惯例是菜单放在屏幕顶部、Windows 惯例是窗口内菜单栏。用普通控件做的菜单在两个平台都格格不入。NativeMenuBar.cs 与 NativeMenuItem.cs 配合平台导出层让同一份声明自动按平台规范呈现。关键用法NativeMenuBar NativeMenuItem Header文件 NativeMenuItem Header新建 ClickOnNewClicked/ NativeMenuItem Header打开 ClickOnOpenClicked/ /NativeMenuItem /NativeMenuBar在 App 里指定自定义编译的 macOS 原生库它是什么macOS 后端有一块用 Objective-C 写的原生代码位于 native/Avalonia.Native/src/OSXAvaloniaNativeLibraryPath让你告诉 Avalonia 去加载你自己用 Xcode 编译出来的那个.dylib而不是 NuGet 包里自带的那份。解决什么痛点改一行原生代码后要看到效果以往得触发整个 Avalonia 仓库的重编。现在在 Xcode 里按 CmdB 编译把产物路径填进配置就行。Xcode 的 Products 面板长这样能直接看到编译产物位置关键用法出自 docs/macos-native.mdpublic static AppBuilder BuildAvaloniaApp() AppBuilder.ConfigureApp() .UsePlatformDetect() .With(new AvaloniaNativePlatformOptions { AvaloniaNativeLibraryPath [Path to your dylib], })动手给 Sandbox 项目加一条自适应侧边栏以 samples/Sandbox/ 为例三步完成。改这一行打开samples/Sandbox/MainWindow.axaml把StackPanel根节点换成SplitView并写上PaneWidth200。在 Pane 里放导航项在SplitView.Pane下加一个StackPanel放两三个TextBlock当占位导航。在 App 里加上DisplayMode保持默认值Overlay源码默认值见 SplitView.cs。窗口放大时把代码里的DisplayMode切换为Inline侧边栏就会从浮层变成并排无需改动任何布局代码。升级前确认这几项主版本内兼容性同一主版本内承诺源码与二进制兼容CI 上每次构建都会跑 API 比对策略见 docs/api-compat.md。从 11.x 升到 12 属于跨主版本破坏性变更是允许的务必对照官方迁移文档逐条检查。11 → 12 的破坏性变更readme 中明确列出了 Avalonia 11 到 12 的 breaking changes 文档升级前先看这一份。API 变动走审批仓库内的破坏性变更必须经代码团队批准并用nuke --update-api-suppression true更新抑制文件见 api-compat.md。你在 11.x 分支里写的代码升级到下一个 11.x 补丁版时不需要改 API 调用。原生菜单的行为差异NativeMenuBar在不同平台呈现位置不同macOS 顶部、Windows 窗口内布局时别假设它一定出现在窗口内部。写在最后主线版本正走在 12.2 的轨道上SplitView、NativeMenuBar 和原生库热替换是这次值得先上手的三块内容。动手前先把下面的资源翻一遍遇到问题可以直接在仓库 Issues 里提问。官方文档docs/index.md示例目录samples/构建指南docs/含 api-compat.md、release.md贡献指南CONTRIBUTING.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),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。