Avalonia 的 XAML 热重载不支持 .axaml 文件实时刷新,仅 C# 代码修改可热重载;根本原因是 .axaml 在构建期编译为 BAML/IL,无法运行时动态替换可视化树;推荐使用 Live.Avalonia 插件或 Avalonia Previewer 等替代方案。
Avalonia 的 XAML 热重载(Hot Reload)目前不支持原生实时刷新 UI 变化,和 WPF 或 MAUI 的体验不同。默认情况下,修改 .axaml 文件保存后,界面不会自动更新——这是常见困惑点,也是官方明确说明的限制。
应?Avalonia 当前(截至 2025 年底)的热重载能力仅覆盖 C# 代码文件(.cs),比如 ViewModel 属性、命令逻辑或后台方法的修改可即时生效;但 XAML 结构、样式、绑定表达式等 UI 层变更不会触发自动重绘。
根本原因在于 Avalonia 的 XAML 编译模型与运行时加载机制:.axaml 在构建期被编译为 BAML 或 IL 资源,不支持运行时动态解析与替换整棵可视化树。
若需接近“XAML 实时编辑”的体验,推荐使用社区维护的 Live.Avalonia 包(非官方,但广泛采用):
Live.Avalonia 包.csproj)中添加监控配置:
App.axaml.cs 中初始化 LiveViewHost,并确保主窗口实现了 ILiveView
不依赖插件也能提升效率:
d:DataContext 指定设计时 ViewModel,配合 Previewer 查看布局与样式效果dotnet watch run(需启用 true ),可监听 .axaml 变更并自动重启进程(有秒级延迟,但比手动操作快)使用 Live.Avalonia 时要注意:
LiveViewHost.Refresh()