axaml-syntax-reference
Quick reference for Avalonia XAML (AXAML) syntax including namespaces, property syntax, bindings, styles, and SukiUI patterns
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Quick reference for Avalonia XAML (AXAML) syntax including namespaces, property syntax, bindings, styles, and SukiUI patterns
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Implement MVVM patterns using CommunityToolkit.Mvvm in Avalonia applications with ViewModels, Commands, and Dependency Injection
A guide on working with claims in asp.net core
Guides agents on implmenting policy based authorization in Asp.net
Comprehensive guide to data binding patterns in Avalonia for AI agents.
| name | axaml-syntax-reference |
| description | Quick reference for Avalonia XAML (AXAML) syntax including namespaces, property syntax, bindings, styles, and SukiUI patterns |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"avalonia-developers","framework":"avalonia"} |
Complete reference for Avalonia XAML (AXAML) syntax.
Use this skill when you need to:
<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>
Attributes:
x:Class: Code-behind class (required)x:DataType: ViewModel type for compiled bindings (required)Standard:
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SukiUI (Critical): Always use the URL-based namespace.
xmlns:suki="https://github.com/kikipoulet/SukiUI"
Custom:
xmlns:vm="using:YourApp.ViewModels"
xmlns:views="using:YourApp.Views"
xmlns:local="clr-namespace:YourApp"
Attribute (Simple):
<Button Content="Click" Width="100" />
Element (Complex):
<Button>
<Button.Content>
<StackPanel>
<TextBlock Text="A" />
<TextBlock Text="B" />
</StackPanel>
</Button.Content>
</Button>
Modes: OneWay (default), TwoWay (input), OneTime, OneWayToSource
Syntax:
<!-- Property -->
<TextBlock Text="{Binding Name}" />
<!-- TwoWay (Input) -->
<TextBox Text="{Binding Name, Mode=TwoWay}" />
<!-- StringFormat -->
<TextBlock Text="{Binding Price, StringFormat='${0:F2}'}" />
<!-- Relative -->
<TextBlock Text="{Binding $parent[Window].Title}" />
<!-- Element -->
<TextBox Name="Input" />
<TextBlock Text="{Binding #Input.Text}" />
Selector Syntax:
<!-- Type -->
<Style Selector="Button">
<Setter Property="Background" Value="Blue" />
</Style>
<!-- Class -->
<Style Selector="Button.Primary">
<Setter Property="Background" Value="Red" />
</Style>
<!-- Pseudo-class -->
<Style Selector="Button:pointerover">
<Setter Property="Opacity" Value="0.8" />
</Style>
<!-- Child combinator -->
<Style Selector="StackPanel > Button">
<Setter Property="Margin" Value="5" />
</Style>
<!-- Descendant combinator -->
<Style Selector="Grid Button">
<Setter Property="Padding" Value="10" />
</Style>
Usage:
<Button Classes="Primary" Content="Red Button" />
{StaticResource Key}: Fixed resource{DynamicResource Key}: Dynamic resource (themes){x:Static Class.Member}: Static member{x:Null}: Null value{Binding Path}: Data binding{CompiledBinding Path}: Explicit compiled binding{ReflectionBinding Path}: Opt-out of compiled bindingExamples:
<!-- Static Resource -->
<TextBlock Text="{StaticResource WelcomeMessage}" />
<!-- Dynamic Resource (for theming) -->
<Button Background="{DynamicResource ThemeBrush}" />
<!-- Static Property -->
<TextBlock TexStatic local:Constants.AppName}" />
<PathIcon Data="{x:Static icons:Icons.Home}" />
<!-- Null Value -->
<Button Command="{x:Null}" />
x:DataType: Always use for compiled bindings
SukiWindow: Use SukiWindow as root for main windows
<suki:SukiWindow xmlns:suki="https://github.com/kikipoulet/SukiUI"
x:Class="YourApp.Views.MainWindow"
Title="My App"
Width="1200"
Height="800">
<!-- Content -->
</suki:SukiWindow>
Explicit Sizes: Set explicit Width and Height for windows
BulletDecorator: Deprecated. Use StackPanel with Orientation="Horizontal"
TwoWay Binding: Always explicit for input controls
<TextBox Text="{Binding Name, Mode=TwoWay}" />
Namespace Prefixes: Use consistent, short prefixes
vm for ViewModelsviews for Viewslocal for current namespacesuki for SukiUI| Mistake | Correction |
|---|---|
Missing x:DataType | Add x:DataType="vm:MyVM" |
xmlns:suki="using:..." | Use xmlns:suki="https://github.com/..." |
<Window> with Suki | Use <suki:SukiWindow> |
| Default Binding on Input | Use Mode=TwoWay |
Missing x:Class | Add x:Class="Namespace.Views.ViewName" |
<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">
<!-- DataTemplates for navigation -->
<suki:SukiWindow.DataTemplates>
<DataTemplate DataType="vm:HomePageViewModel">
<views:HomePage />
</DataTemplate>
<DataTemplate DataType="vm:SettingsPageViewModel">
<views:Setting />
</DataTemplate>
</suki:SukiWindow.DataTemplates>
<!-- Content -->
<Grid>
<!-- Your UI here -->
</Grid>
</suki:SukiWindow>
<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>
Binding not working?
x:DataType is setMode=TwoWay for input controlsSukiUI controls not found?
xmlns:suki="https://github.com/kikipoulet/SukiUI"<suki:SukiWindow> not <Window>Navigation not working?
Styles not applying?