主要区别就一个:Avalonia用 .axaml 后缀,WPF用 .xaml;这不是命名习惯问题,而是为解决与Visual Studio的兼容性冲突而做的技术调整。
文件扩展名和命名空间是硬性要求
Avalonia从0.9.11版起统一使用
.axaml,所有模板和新建项默认生成该后缀。关键在于根元素必须声明两个命名空间:
xmlns="https://github.com/avaloniaui"—— Avalonia专属命名空间,缺了它整个文件无法识别
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"—— XAML语言基础命名空间,用于
x:Class、
x:Name等通用特性
结构上相似但细节不同
虽然语法看起来像WPF XAML,但实际行为有差异:
没有自动生成的.g.i.cs文件,不能直接用
x:Name当变量名访问控件,必须手动调用
this.Get<t>("Name")</t>
事件绑定在XAML中有时不稳定,推荐在代码后台用 AddHandler或直接挂载
Click +=样式系统不依赖资源字典层级继承,改用类似CSS的选择器写法,比如
TextBlock.h1
典型.axaml文件长这样
这是最简可用的窗口定义:
x:Class="MyApp.MainWindow">
注意:根元素可以是
Window、
UserControl、
Page等,但必须匹配后台类继承关系;
x:Class值必须与C#类全名完全一致。
基本上就这些,不复杂但容易忽略命名空间和获取控件的方式。
