SuperAPI AI 工具集

avalonia-api

前端与建站

查看项目

更新于 10-16 02:06

技能介绍

用途

本技能用于在 XerahS 的 UI 任务需要 API 指导时,查询 Avalonia 的绑定、控件或模板模式。它是一份 Avalonia UI 框架的完整 API 与最佳实践指南,目标框架为 .NET 10.0+,文件扩展名为 .axaml(Avalonia XAML),官方文档为 https://docs.avaloniaui.net/。

主要内容范围

指南目录涵盖:AXAML 基础、控件与 UI 元素、布局系统、数据绑定、基于 CommunityToolkit.Mvvm 的 MVVM 模式、样式与主题、依赖属性与附加属性、自定义控件、控件模板、资源与转换器、事件与命令、导航、跨平台模式、性能与最佳实践、开发者工具、常见错误,以及 XerahS 中的常见模式。

AXAML 基础

每个 .axaml 文件遵循标准结构,包含 Window 根元素及命名空间声明。必需命名空间包括核心 Avalonia 控件命名空间(xmlns="https://github.com/avaloniaui")和 XAML 语言特性命名空间(xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml");MVVM 场景需要 ViewModel 引用命名空间,本地类型/控件按需声明。自定义命名空间支持当前程序集(using: 前缀)和引用程序集(clr-namespace:...;assembly=...)两种语法。控件内容可通过隐式 Content 属性、显式 Content 属性或属性元素语法设置。

控件与 UI 元素

指南列举了常用内置控件,按类别划分:输入控件(TextBox、PasswordBox、NumericUpDown、CheckBox、RadioButton、Slider、ComboBox、AutoCompleteBox、DatePicker、TimePicker、ColorPicker);显示控件(TextBlock、Label、Image、Border、ContentControl);布局面板(Panel、StackPanel、Grid、DockPanel、Canvas、WrapPanel、RelativePanel、UniformGrid);列表与集合(ListBox、ListView、TreeView、DataGrid、ItemsControl、ItemsRepeater);容器(Window、UserControl、ScrollViewer、Expander、TabControl、SplitView);按钮(Button、ToggleButton、RepeatButton、RadioButton、SplitButton、DropDownButton);高级控件(Carousel、MenuFlyout、ContextFlyout、ContextMenu、Menu、ToolTip、Flyout、Calendar)。其中提示在 FluentAvalonia 主题下优先使用 ContextFlyout 而非 ContextMenu,MenuFlyout 需配合 FluentAvalonia 使用。

布局系统

ScrollViewer 只有在 Measure 阶段从父级获得有限(有界)高度约束时才会激活并显示滚动条;若任一祖先传递无限高度,则永不滚动。指南列出了 XerahS 布局中无限高度的常见来源及修复方式:SplitView 作为双列外壳(改用 Grid ColumnDefinitions="auto,*")、TransitioningContentControl 作为页面宿主(改用 ContentControl 并设置 Stretch 对齐)、TabControl 未设置 VerticalContentAlignment="Stretch"(添加该设置)、ScrollViewer 使用 Padding(移除 Padding,改为内部 StackPanel/Grid 的 Margin)。并给出可滚动设置页面的规范模式与错误示例。

布局采用两遍系统:Measure 遍确定期望尺寸,Arrange 遍在可用空间内定位控件。面板对比中,Panel 填充可用空间性能最佳,StackPanel、Canvas 良好,Grid、RelativePanel 复杂度较高。建议无行/列时用 Panel 替代 Grid。指南还介绍了常用布局属性、Grid 布局(含星号比例)、DockPanel、StackPanel、GridSplitter(可调整窗格,需专用 3–6px 窄列/行,ResizeDirection 需匹配轴,相邻单元格设置 Min/Max 防止塌缩)。

响应式布局提供四种方式:容器查询(Container Queries,可复用组件首选,响应祖先控件尺寸)、OnFormFactor(启动时静态平台检测)、自适应面板(WrapPanel 或 UniformGridLayout)、断点 ViewModel。关键规则:优先容器查询而非手动尺寸事件;Grid 定义始终使用星号与 Auto;用 bool IsVisible 替代 Visibility 枚举,占位不可见用 Opacity="0";不使用 VisualStateManager。

数据绑定

介绍基本绑定、路径绑定、绑定模式(OneWay 默认、TwoWay、OneTime、OneWayToSource)、绑定到命名元素(#ElementName.Property)、绑定到父级 DataContext、FallbackValue、StringFormat、转换器。强调 #ElementName.Property 是 Avalonia 绑定路径扩展,应与 Avalonia Binding/编译绑定配合使用;不要写 {ReflectionBinding #SomeElement.SomeCommand},因为 ReflectionBinding 会把 #... 当作普通路径段,导致运行时查找失败。

推荐编译绑定:可在 .csproj 全局启用(AvaloniaUseCompiledBindingsByDefault),或在特定视图启用(x:DataType 与 x:CompileBindings="True"),也可显式使用 {CompiledBinding ...}。仅对无法类型化的真正动态路径使用 ReflectionBinding,且绝不与 #ElementName 语法同用。v11.3+ 支持 DataContext 类型推断。此外介绍 MultiBinding 与元素绑定。

MVVM 模式

明确 XerahS 使用 CommunityToolkit.Mvvm,而非 ReactiveUI,不要添加或引用 ReactiveUI 或 Avalonia.ReactiveUI 包。安装命令为 dotnet add package CommunityToolkit.Mvvm。ViewModel 基类模式使用 [ObservableProperty] 与 [RelayCommand] 源生成器:私有字段生成公开 PascalCase 属性与通知,[RelayCommand] 自动生成命令,类必须为 partial,CanExecute 自动接线并需在条件变化时调用 NotifyCanExecuteChanged()。

架构分层:Views(AXAML)仅做视觉组合,代码隐藏除 InitializeComponent() 外无业务逻辑;ViewModels 承载状态、命令与编排,与 UI 框架无关且可单元测试,通过 DI 接线服务;Services/Domain 为业务逻辑与数据访问,不引用 Avalonia 类型。

适用场景与限制

适用于 XerahS 项目中需要 Avalonia 绑定、控件、模板、布局、MVVM 等 API 指导的 UI 开发任务。资料中未提供该技能的收费、价格、平台支持范围、具体安装步骤(除 CommunityToolkit.Mvvm 包安装命令外)及效果说明,这些信息暂未提供。