AI 技能AI 插件人工智能【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址:https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills点击查看免费下载在 Avalonia 应用中,XAML 布局的质量直接决定了代码的可读性与可维护性。Zafiro.Avalonia为常见布局模式提供了语义化容器控件,用它们替代裸Border、Grid堆叠,能让视图声明更简洁、结构更清晰。本文以本仓库avalonia-layout-zafiro技能包中的containers.md为核心,结合同技能包下的themes.md、components.md、icons.md与behaviors.md,系统讲解HeaderedContainer、EdgePanel、Card三种语义容器的属性、用法、样式化方式与最佳实践,帮助你写出"少嵌套、少重复、少魔法"的 Avalonia 界面。为什么需要语义容器在传统 Avalonia XAML 中,一个带标题的分区通常需要手工组合Border+Grid+ 多个TextBlock,视觉属性和布局逻辑散落在每个元素上。当页面中重复出现这类结构时,代码会迅速膨胀,且难以统一改版。Zafiro.Avalonia的核心思路是为数据形态选择正确的容器:把"带标题的分区"、"左右对齐的信息行"、"分组卡片"这些高频模式固化为专用控件,从而:简化 XAML,让每个控件只表达"是什么"而非"怎么摆";提升可维护性,样式集中在共享资源中统一管理;降低嵌套深度,减少渲染树的层级,改善性能表现。本技能包(SKILL.md)将其总结为一句准则:关注语义容器、共享样式与最小化 XAML。📦 HeaderedContainer:带标题的分区容器当一个区块需要标题或表头时,优先使用HeaderedContainer,而不是手写Border加标题行。它把"头部区域 + 内容区域"的双层结构内置到控件模板中,使用方只需声明 Header 与 Content。基本用法<HeaderedContainer Header="Security Settings" Classes="WizardSection"> <StackPanel> <!-- Content here --> </StackPanel> </HeaderedContainer>关键属性属性作用Header头部内容,可以是字符串,也可以是任意控件内容HeaderBackground头部区域的画刷(Brush),用于区分头部与内容区ContentPadding内容区域的内边距,避免内容紧贴容器边缘结合模板样式定制内部部件HeaderedContainer的内部由模板构成,若需统一调整头部图标的尺寸与外观,可以在样式中通过模板选择器定位内部部件。技能包 icons.md 给出了典型写法:<Style Selector="HeaderedContainer /template/ ContentPresenter#Header EdgePanel /template/ ContentControl#StartContent"> <Setter Property="IconOptions.Size" Value="20" /> <Setter Property="IconOptions.Fill" Value="{DynamicResource Accent}" /> <Setter Property="IconOptions.Padding" Value="10" /> <Setter Property="IconOptions.CornerRadius" Value="10" /> </Style>该选择器依次定位HeaderedContainer模板中的ContentPresenter#Header,再深入其内部EdgePanel模板中的ContentControl#StartContent,从而只针对"头部起始图标"生效,而不会误伤其他图标。这正对应containers.md最佳实践中的建议:通过样式模板定制容器内部部件,而不是继续嵌套更多控件。↔️ EdgePanel:边缘对齐面板EdgePanel用于把元素固定在容器的边缘位置,无需编写复杂的Grid列定义。它专为"图标 - 文本 - 动作"、"标签 - 值"这类线性行布局设计。基本用法<EdgePanel StartContent="{Icon fa-wallet}" Content="Wallet Balance" EndContent="$1,234.00" />插槽语义插槽对齐位置StartContent对齐到左侧(或书写方向起点)Content填充中间剩余空间EndContent对齐到右侧(或书写方向终点)与Grid相比,EdgePanel免去了ColumnDefinitions与Grid.Column索引的管理成本;与DockPanel相比,它把"起始/中间/末尾"的语义直接固化在属性名中,声明即意图。替代重复的 Grid 行components.md中给出了一个典型重构:反复出现的"标签 - 值"Grid行<!-- ❌ BAD: Repeated Grid --> <Grid ColumnDefinitions="*,Auto"> <TextBlock Text="Total:" /> <TextBlock Grid.Column="1" Text="{Binding Total}" /> </Grid>可以被扁平化为单个EdgePanel:<!-- ✅ GOOD: Use a specialized control or style --> <EdgePanel StartContent="Total:" EndContent="{Binding Total}" Classes="SummaryItem" />📇 Card:信息分组容器Card是一个轻量容器,用于把相关的一组信息聚合成视觉上的"卡片",常用于HeaderedContainer内部,或作为列表中的独立元素。它本身不强制标题结构,适合承载表单字段、摘要等。<Card Header="Enter recipient address:"> <TextBox Text="{Binding Address}" /> </Card>从components.md的组件粒度分类看:Card属于"分子"级组件——由若干原子(标题、内容控件)组合而成,目标是足够通用以便复用,又足够具体以显著简化父视图。📐 最佳实践:让语义容器真正发挥价值containers.md末尾的两条最佳实践是整个技能包的方法论缩影:用Classes应用主题变体:例如Classes="Section"、Classes="Highlight"。同一控件在不同语境下通过样式类切换外观,而不是复制属性。用模板定制内部部件,而非继续嵌套控件:当容器内部样式需要调整时,优先在样式中编写模板选择器(如上一节所示),保持视图声明的扁平。这两条实践与 themes.md 中的共享样式策略一脉相承:<!-- ❌ BAD: Redundant properties --> <HeaderedContainer CornerRadius="10" BorderThickness="1" BorderBrush="Blue" Background="LightBlue" /> <HeaderedContainer CornerRadius="10" BorderThickness="1" BorderBrush="Blue" Background="LightBlue" /> <!-- ✅ GOOD: Use Classes and Styles --> <HeaderedContainer Classes="BlueSection" /> <HeaderedContainer Classes="BlueSection" />配套的共享样式定义:<Style Selector="HeaderedContainer.BlueSection"> <Setter Property="CornerRadius" Value="10" /> <Setter Property="BorderThickness" Value="1" /> <Setter Property="BorderBrush" Value="{DynamicResource Accent}" /> <Setter Property="Background" Value="{DynamicResource SurfaceSubtle}" /> </Style>布局选型速查需求推荐容器理由带标题/表头的分区HeaderedContainer头部与内容分层内建,支持HeaderBackground、ContentPadding左-中-右单行对齐EdgePanel语义化插槽,免去Grid列定义简单线性排列StackPanel(配Spacing)层级最浅、最易读等尺寸单元格网格UniformGrid所有单元格大小一致信息分组卡片Card轻量分组容器,可独立用于列表(来源:components.md 中的扁平化布局讨论。)❌ 反模式自查清单围绕语义容器,技能包 SKILL.md 明确列出了应避免的做法:在视图中硬编码颜色或尺寸字面量;深度嵌套Grid与StackPanel;在多个元素上重复书写视觉属性(应提取为 Styles);为简单逻辑使用IValueConverter(应优先放进 ViewModel 属性或 Behaviors)。对应的正面做法是:颜色与画刷一律使用DynamicResource,以支持主题切换(详见 themes.md 的Colors.axaml/Theme.axaml组织方式);将重复布局抽取为通用组件或语义容器;充分利用Zafiro.Avalonia的EdgePanel等专用面板。每完成一个视图,可以对照 SKILL.md 中的 CheckList 复核:是否使用了语义容器?是否避免了冗余属性?嵌套是否足够浅?图标是否通过{Icon fa-name}扩展使用?UI 逻辑是否由Interaction.Behaviors承载?总结HeaderedContainer、EdgePanel与Card构成了Zafiro.Avalonia语义容器体系的核心三件套:一个负责"带标题的分区",一个负责"边缘对齐的单行布局",一个负责"信息分组"。把它们与Classes+ 共享样式(themes.md)、{Icon}扩展与IconOptions(icons.md)、Interaction.Behaviors(behaviors.md)配合使用,即可系统性减少 XAML 冗余,得到结构清晰、易于改版与测试的 Avalonia 布局。本技能包同时可在 plugins/agentic-awesome-skills/skills/avalonia-layout-zafiro 下找到对应的同一套指南,方便不同环境按需查阅。赞分享AI 技能AI 插件人工智能【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址:https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills点击查看免费下载相关推荐基于 Zafiro.Avalonia 的 Avalonia UI 现代布局实践:语义容器、共享样式与最小化 XAML 冗余基于 Zafiro.Avalonia 的 Avalonia UI 现代布局实践:语义容器、共享样式与最小化 XAML 冗余 本文以仓库中 avalonia laAI 技能AI 插件人工智能用 Zafiro.Avalonia 构建通用组件:消除 XAML 嵌套与冗余的 Avalonia 布局实践用 Zafiro.Avalonia 构建通用组件:消除 XAML 嵌套与冗余的 Avalonia 布局实践 本指南围绕 Avalonia UI 开发中的"组件化AI 技能AI 插件人工智能nodeppt 组件语法实战指南:用 `:::` 容器构建 Grid、Card、Flexblock、Gallery 等复杂幻灯片布局nodeppt 组件语法实战指南:用 ::: 容器构建 Grid、Card、Flexblock、Gallery 等复杂幻灯片布局 nodeppt 2.0 在标准前端CLI上一篇:在 AAS 中使用 Anti-Deception 技能:用 MCP 脚手架拦截 AI 谄媚与权威施压的完整性防线下一篇:pandoc Markdown 内联脚注转 AsciiDoc 输出:6424 回归测试的转义行为与原理解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
AI 技能AI 插件人工智能【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址:https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills点击查看免费下载在 Avalonia 应用中,XAML 布局的质量直接决定了代码的可读性与可维护性。Zafiro.Avalonia为常见布局模式提供了语义化容器控件,用它们替代裸Border、Grid堆叠,能让视图声明更简洁、结构更清晰。本文以本仓库avalonia-layout-zafiro技能包中的containers.md为核心,结合同技能包下的themes.md、components.md、icons.md与behaviors.md,系统讲解HeaderedContainer、EdgePanel、Card三种语义容器的属性、用法、样式化方式与最佳实践,帮助你写出"少嵌套、少重复、少魔法"的 Avalonia 界面。为什么需要语义容器在传统 Avalonia XAML 中,一个带标题的分区通常需要手工组合Border+Grid+ 多个TextBlock,视觉属性和布局逻辑散落在每个元素上。当页面中重复出现这类结构时,代码会迅速膨胀,且难以统一改版。Zafiro.Avalonia的核心思路是为数据形态选择正确的容器:把"带标题的分区"、"左右对齐的信息行"、"分组卡片"这些高频模式固化为专用控件,从而:简化 XAML,让每个控件只表达"是什么"而非"怎么摆";提升可维护性,样式集中在共享资源中统一管理;降低嵌套深度,减少渲染树的层级,改善性能表现。本技能包(SKILL.md)将其总结为一句准则:关注语义容器、共享样式与最小化 XAML。📦 HeaderedContainer:带标题的分区容器当一个区块需要标题或表头时,优先使用HeaderedContainer,而不是手写Border加标题行。它把"头部区域 + 内容区域"的双层结构内置到控件模板中,使用方只需声明 Header 与 Content。基本用法<HeaderedContainer Header="Security Settings" Classes="WizardSection"> <StackPanel> <!-- Content here --> </StackPanel> </HeaderedContainer>关键属性属性作用Header头部内容,可以是字符串,也可以是任意控件内容HeaderBackground头部区域的画刷(Brush),用于区分头部与内容区ContentPadding内容区域的内边距,避免内容紧贴容器边缘结合模板样式定制内部部件HeaderedContainer的内部由模板构成,若需统一调整头部图标的尺寸与外观,可以在样式中通过模板选择器定位内部部件。技能包 icons.md 给出了典型写法:<Style Selector="HeaderedContainer /template/ ContentPresenter#Header EdgePanel /template/ ContentControl#StartContent"> <Setter Property="IconOptions.Size" Value="20" /> <Setter Property="IconOptions.Fill" Value="{DynamicResource Accent}" /> <Setter Property="IconOptions.Padding" Value="10" /> <Setter Property="IconOptions.CornerRadius" Value="10" /> </Style>该选择器依次定位HeaderedContainer模板中的ContentPresenter#Header,再深入其内部EdgePanel模板中的ContentControl#StartContent,从而只针对"头部起始图标"生效,而不会误伤其他图标。这正对应containers.md最佳实践中的建议:通过样式模板定制容器内部部件,而不是继续嵌套更多控件。↔️ EdgePanel:边缘对齐面板EdgePanel用于把元素固定在容器的边缘位置,无需编写复杂的Grid列定义。它专为"图标 - 文本 - 动作"、"标签 - 值"这类线性行布局设计。基本用法<EdgePanel StartContent="{Icon fa-wallet}" Content="Wallet Balance" EndContent="$1,234.00" />插槽语义插槽对齐位置StartContent对齐到左侧(或书写方向起点)Content填充中间剩余空间EndContent对齐到右侧(或书写方向终点)与Grid相比,EdgePanel免去了ColumnDefinitions与Grid.Column索引的管理成本;与DockPanel相比,它把"起始/中间/末尾"的语义直接固化在属性名中,声明即意图。替代重复的 Grid 行components.md中给出了一个典型重构:反复出现的"标签 - 值"Grid行<!-- ❌ BAD: Repeated Grid --> <Grid ColumnDefinitions="*,Auto"> <TextBlock Text="Total:" /> <TextBlock Grid.Column="1" Text="{Binding Total}" /> </Grid>可以被扁平化为单个EdgePanel:<!-- ✅ GOOD: Use a specialized control or style --> <EdgePanel StartContent="Total:" EndContent="{Binding Total}" Classes="SummaryItem" />📇 Card:信息分组容器Card是一个轻量容器,用于把相关的一组信息聚合成视觉上的"卡片",常用于HeaderedContainer内部,或作为列表中的独立元素。它本身不强制标题结构,适合承载表单字段、摘要等。<Card Header="Enter recipient address:"> <TextBox Text="{Binding Address}" /> </Card>从components.md的组件粒度分类看:Card属于"分子"级组件——由若干原子(标题、内容控件)组合而成,目标是足够通用以便复用,又足够具体以显著简化父视图。📐 最佳实践:让语义容器真正发挥价值containers.md末尾的两条最佳实践是整个技能包的方法论缩影:用Classes应用主题变体:例如Classes="Section"、Classes="Highlight"。同一控件在不同语境下通过样式类切换外观,而不是复制属性。用模板定制内部部件,而非继续嵌套控件:当容器内部样式需要调整时,优先在样式中编写模板选择器(如上一节所示),保持视图声明的扁平。这两条实践与 themes.md 中的共享样式策略一脉相承:<!-- ❌ BAD: Redundant properties --> <HeaderedContainer CornerRadius="10" BorderThickness="1" BorderBrush="Blue" Background="LightBlue" /> <HeaderedContainer CornerRadius="10" BorderThickness="1" BorderBrush="Blue" Background="LightBlue" /> <!-- ✅ GOOD: Use Classes and Styles --> <HeaderedContainer Classes="BlueSection" /> <HeaderedContainer Classes="BlueSection" />配套的共享样式定义:<Style Selector="HeaderedContainer.BlueSection"> <Setter Property="CornerRadius" Value="10" /> <Setter Property="BorderThickness" Value="1" /> <Setter Property="BorderBrush" Value="{DynamicResource Accent}" /> <Setter Property="Background" Value="{DynamicResource SurfaceSubtle}" /> </Style>布局选型速查需求推荐容器理由带标题/表头的分区HeaderedContainer头部与内容分层内建,支持HeaderBackground、ContentPadding左-中-右单行对齐EdgePanel语义化插槽,免去Grid列定义简单线性排列StackPanel(配Spacing)层级最浅、最易读等尺寸单元格网格UniformGrid所有单元格大小一致信息分组卡片Card轻量分组容器,可独立用于列表(来源:components.md 中的扁平化布局讨论。)❌ 反模式自查清单围绕语义容器,技能包 SKILL.md 明确列出了应避免的做法:在视图中硬编码颜色或尺寸字面量;深度嵌套Grid与StackPanel;在多个元素上重复书写视觉属性(应提取为 Styles);为简单逻辑使用IValueConverter(应优先放进 ViewModel 属性或 Behaviors)。对应的正面做法是:颜色与画刷一律使用DynamicResource,以支持主题切换(详见 themes.md 的Colors.axaml/Theme.axaml组织方式);将重复布局抽取为通用组件或语义容器;充分利用Zafiro.Avalonia的EdgePanel等专用面板。每完成一个视图,可以对照 SKILL.md 中的 CheckList 复核:是否使用了语义容器?是否避免了冗余属性?嵌套是否足够浅?图标是否通过{Icon fa-name}扩展使用?UI 逻辑是否由Interaction.Behaviors承载?总结HeaderedContainer、EdgePanel与Card构成了Zafiro.Avalonia语义容器体系的核心三件套:一个负责"带标题的分区",一个负责"边缘对齐的单行布局",一个负责"信息分组"。把它们与Classes+ 共享样式(themes.md)、{Icon}扩展与IconOptions(icons.md)、Interaction.Behaviors(behaviors.md)配合使用,即可系统性减少 XAML 冗余,得到结构清晰、易于改版与测试的 Avalonia 布局。本技能包同时可在 plugins/agentic-awesome-skills/skills/avalonia-layout-zafiro 下找到对应的同一套指南,方便不同环境按需查阅。赞分享AI 技能AI 插件人工智能【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址:https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills点击查看免费下载相关推荐基于 Zafiro.Avalonia 的 Avalonia UI 现代布局实践:语义容器、共享样式与最小化 XAML 冗余基于 Zafiro.Avalonia 的 Avalonia UI 现代布局实践:语义容器、共享样式与最小化 XAML 冗余 本文以仓库中 avalonia laAI 技能AI 插件人工智能用 Zafiro.Avalonia 构建通用组件:消除 XAML 嵌套与冗余的 Avalonia 布局实践用 Zafiro.Avalonia 构建通用组件:消除 XAML 嵌套与冗余的 Avalonia 布局实践 本指南围绕 Avalonia UI 开发中的"组件化AI 技能AI 插件人工智能nodeppt 组件语法实战指南:用 `:::` 容器构建 Grid、Card、Flexblock、Gallery 等复杂幻灯片布局nodeppt 组件语法实战指南:用 ::: 容器构建 Grid、Card、Flexblock、Gallery 等复杂幻灯片布局 nodeppt 2.0 在标准前端CLI上一篇:在 AAS 中使用 Anti-Deception 技能:用 MCP 脚手架拦截 AI 谄媚与权威施压的完整性防线下一篇:pandoc Markdown 内联脚注转 AsciiDoc 输出:6424 回归测试的转义行为与原理解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考