用途
AXAML Syntax Reference 是一个面向 Avalonia XAML(AXAML)的语法快速参考技能,用于在编写或调试 AXAML 时快速查阅正确写法。它覆盖根元素结构、命名空间声明、属性语法、数据绑定、样式选择器、标记扩展,以及 SukiUI 相关模式,并列出常见错误与对应修正。
主要能力
- 提供 AXAML 根元素结构参考,包括 x:Class、x:DataType 等必需属性。
- 展示正确的命名空间声明,特别是 SukiUI 需使用基于 URL 的命名空间。
- 说明属性语法:简单特性写法与复杂元素写法。
- 演示数据绑定语法快捷方式,包括绑定模式、StringFormat、相对绑定与元素绑定。
- 展示样式选择器模式:类型、类、伪类、子组合器、后代组合器。
- 列出标记扩展:StaticResource、DynamicResource、x:Static、x:Null、Binding、CompiledBinding、ReflectionBinding。
- 指出常见错误并给出修正,例如缺少 x:DataType、SukiUI 命名空间写法错误、输入控件未显式使用 TwoWay 等。
- 提供 SukiUI 特定模式示例,包括 SukiWindow 设置与 SukiSideMenu 用法。
- 提供快速排查指引,覆盖绑定不工作、SukiUI 控件找不到、导航不工作、样式不生效等情况。
使用方式
该技能以参考文档形式提供,按主题组织内容。使用时可直接查阅对应小节:
- 新建 AXAML 文件时,参考“Basic Structure”中的根元素与命名空间声明。
- 需要选择属性写法时,参考“Property Syntax”中的特性与元素两种形式。
- 编写绑定时,参考“Data Binding”中的模式与语法示例。
- 编写样式时,参考“Styles”中的选择器语法与 Classes 用法。
- 使用资源或静态成员时,参考“Markup Extensions”中的示例。
- 使用 SukiUI 时,参考“SukiUI Specific Patterns”中的 SukiWindow 与 SukiSideMenu 示例。
- 遇到问题时,参考“Quick Troubleshooting”逐项排查。
文档中给出的关键写法包括:
根元素示例:
<UserControl xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="600" x:Class="Namespace.Views.ViewName" x:DataType="vm:ViewModelName"> <!-- Content --> </UserControl>
SukiUI 命名空间:
xmlns:suki="https://github.com/kikipoulet/SukiUI"
自定义命名空间:
xmlns:vm="using:YourApp.ViewModels" xmlns:views="using:YourApp.Views" xmlns:local="clr-namespace:YourApp"
绑定示例:
<TextBlock Text="{Binding Name}" /> <TextBox Text="{Binding Name, Mode=TwoWay}" /> <TextBlock Text="{Binding Price, StringFormat='${0:F2}'}" /> <TextBlock Text="{Binding $parent[Window].Title}" /> <TextBox Name="Input" /> <TextBlock Text="{Binding #Input.Text}" />
样式选择器示例:
<Style Selector="Button"> <Setter Property="Background" Value="Blue" /> </Style> <Style Selector="Button.Primary"> <Setter Property="Background" Value="Red" /> </Style> <Style Selector="Button:pointerover"> <Setter Property="Opacity" Value="0.8" /> </Style> <Style Selector="StackPanel > Button"> <Setter Property="Margin" Value="5" /> </Style> <Style Selector="Grid Button"> <Setter Property="Padding" Value="10" /> </Style>
标记扩展示例:
<TextBlock Text="{StaticResource WelcomeMessage}" /> <Button Background="{DynamicResource ThemeBrush}" /> <PathIcon Data="{x:Static icons:Icons.Home}" /> <Button Command="{x:Null}" />
SukiWindow 示例:
<suki:SukiWindow xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:suki="https://github.com/kikipoulet/SukiUI" xmlns:vm="using:YourApp.ViewModels" xmlns:views="using:YourApp.Views" x:Class="YourApp.Views.MainWindow" x:DataType="vm:MainWindowViewModel" Title="My Application" Width="1200" Height="800"> suki:SukiWindow.DataTemplates <DataTemplate DataType="vm:HomePageViewModel"> <views:HomePage /> </DataTemplate> <DataTemplate DataType="vm:SettingsPageViewModel"> <views:Setting /> </DataTemplate> </suki:SukiWindow.DataTemplates> <Grid> <!-- Your UI here --> </Grid> </suki:SukiWindow>
SukiSideMenu 示例:
<suki:SukiSideMenu ItemsSource="{Binding Pages}" SelectedItem="{Binding SelectedPage, Mode=TwoWay}" HeaderContent="{Binding AppTitle}"> suki:SukiSideMenu.ItemTemplate <DataTemplate> <suki:SukiSideMenuItem Header="{Binding DisplayName}"> suki:SukiSideMenuItem.Icon <PathIcon Data="{Binding Icon}" /> </suki:SukiSideMenuItem.Icon> </suki:SukiSideMenuItem> </DataTemplate> </suki:SukiSideMenu.ItemTemplate> </suki:SukiSideMenu>
适用场景
- 新建 AXAML 文件并需要正确结构时。
- 为 SukiUI 或自定义类型添加命名空间声明时。
- 在特性语法与元素语法之间做选择时。
- 为控件编写样式选择器时。
- 使用 StaticResource、x:Static 等标记扩展时。
- 修复常见 AXAML 语法错误时。
- 确保 SukiWindow 正确设置时。
限制
资料未提供该技能的安装方式、运行环境要求、版本兼容范围、收费或价格信息,也未说明其是否支持除 Avalonia 与 SukiUI 之外的其他框架。文档中部分示例存在疑似笔误(如 x:Static 示例中的文本),实际使用时需以官方语法为准。