# Form 自定义样式指南 Form 的视觉表现通过 `ControlTheme` + Design Token 系统控制。表单系统包含多个控件(`Form`、`FormItem`、`SubmitButton`、`ResetButton`、`FormItemDecorator`),每个控件都有独立的 ControlTheme。 --- ## 1. 通过属性直接控制 Form 系统提供了丰富的属性,覆盖了绝大多数自定义场景: ### 表单级属性 ```xml ``` ### 字段级属性 ```xml ``` > 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/FormShowCase.axaml` --- ## 2. 通过 Style 覆盖样式 ### 全局 Form 样式 ```xml ``` ### 修改 FormItem 标签样式 ```xml ``` ### 按验证状态定制样式 ```xml ``` ### 按布局定制样式 ```xml ``` ### 按尺寸定制样式 ```xml ``` --- ## 3. 自定义必填标记 ### 使用 Tag 作为自定义标记 ```xml required optional ``` ### 使用 DataTemplate 自定义标记 ```xml ``` --- ## 4. 自定义验证反馈图标 Form 的验证反馈图标可以通过 FeedbackTemplate 及各状态的模板属性进行替换: ```xml ``` --- ## 5. 自定义错误/警告消息颜色 ```xml ``` **提示**:默认情况下这些颜色由 Design Token 控制(`ColorErrorText` / `ColorWarningText`),仅在需要覆盖全局主题时才手动设置。 --- ## 6. 自定义删除按钮图标 动态表单中的删除按钮图标可以替换: ```xml ``` --- ## 7. 通过 ControlTheme 完全替换主题 如果需要彻底替换 FormItem 的模板,可以定义自定义 `ControlTheme`: ```xml ``` > ⚠️ 注意:完全替换 ControlTheme 将丢失内置的验证状态展示、必填标记、响应式布局等功能。建议优先使用 Style 覆盖或属性控制。 --- ## 样式选择器速查 > 说明:Avalonia 样式选择器中使用 `atom|Form` 语法引用 `atom` XML 命名空间下的控件类型,其中 `|` 是命名空间分隔符。 ### Form 选择器 | 选择器 | 说明 | |---|---| | `atom\|Form` | 匹配所有 Form 实例 | | `atom\|Form[FormLayout=Horizontal]` | 匹配水平布局的表单 | | `atom\|Form[FormLayout=Vertical]` | 匹配垂直布局的表单 | | `atom\|Form[FormLayout=Inline]` | 匹配内联布局的表单 | | `atom\|Form[SizeType=Large]` | 匹配大号尺寸的表单 | | `atom\|Form[SizeType=Small]` | 匹配小号尺寸的表单 | | `atom\|Form:disabled` | 匹配禁用状态的表单 | ### FormItem 选择器 | 选择器 | 说明 | |---|---| | `atom\|FormItem` | 匹配所有 FormItem 实例 | | `atom\|FormItem[Layout=Horizontal]` | 匹配水平布局的字段项 | | `atom\|FormItem[Layout=Vertical]` | 匹配垂直布局的字段项 | | `atom\|FormItem[IsRequired=True]` | 匹配必填的字段项 | | `atom\|FormItem[ValidateStatus=Error]` | 匹配验证错误状态的字段项 | | `atom\|FormItem[ValidateStatus=Warning]` | 匹配验证警告状态的字段项 | | `atom\|FormItem[ValidateStatus=Success]` | 匹配验证成功状态的字段项 | | `atom\|FormItem[ValidateStatus=Validating]` | 匹配验证中状态的字段项 | | `atom\|FormItem[ValidateStatus=Default]` | 匹配未验证状态的字段项 | | `atom\|FormItem[SizeType=Large]` | 匹配大号尺寸的字段项 | | `atom\|FormItem[SizeType=Middle]` | 匹配中号尺寸的字段项 | | `atom\|FormItem[SizeType=Small]` | 匹配小号尺寸的字段项 | | `atom\|FormItem[RequiredMark=Default]` | 匹配使用默认必填标记的字段项 | | `atom\|FormItem[RequiredMark=Optional]` | 匹配使用可选标记模式的字段项 | | `atom\|FormItem[RequiredMark=Customize]` | 匹配使用自定义标记的字段项 | | `atom\|FormItem[HasErrorOrWarningMsg=True]` | 匹配有错误/警告消息的字段项 | | `atom\|FormItem[HasErrorOrWarningMsg=False]` | 匹配无错误/警告消息的字段项 | | `atom\|FormItem[IsValueItem=True]` | 匹配数据项(非 FormActionsItem) | | `atom\|FormItem[IsShowItemDeleteButton=True]` | 匹配显示删除按钮的字段项 | ### FormItem 模板部件 | 选择器 | 部件说明 | |---|---| | `atom\|FormItem /template/ DockPanel#PART_RootLayout` | 根布局面板 | | `atom\|FormItem /template/ Panel#PART_LabelLayout` | 标签区域容器 | | `atom\|FormItem /template/ TextBlock#PART_Label` | 标签文本 | | `atom\|FormItem /template/ TextBlock#PART_Colon` | 冒号文本 | | `atom\|FormItem /template/ TextBlock#PART_DefaultRequireMark` | 红色星号(*)必填标记 | | `atom\|FormItem /template/ Grid#PART_BodyLayout` | 主体布局(标签 + 内容) | | `atom\|FormItem /template/ StackPanel#PART_ContentLayout` | 内容区域 | | `atom\|FormItem /template/ TextBlock#PART_ErrorMsg` | 错误/警告消息文本 | | `atom\|FormItem /template/ TextBlock#HelpText` | 帮助文本 | | `atom\|FormItem /template/ ContentPresenter#ContentPresenter` | 内容控件展示器 | | `atom\|FormItem /template/ ContentPresenter#ExtraPresenter` | 额外内容展示器 | | `atom\|FormItem /template/ ContentPresenter#CustomRequiredMarkPresenter` | 自定义必填标记展示器 | | `atom\|FormItem /template/ ContentPresenter#CustomOptionalMarkPresenter` | 自定义可选标记展示器 | | `atom\|FormItem /template/ TextBlock#OptionalMark` | "(optional)" 文本标记 | | `atom\|FormItem /template/ atom\|IconPresenter#TooltipIconPresenter` | 提示图标 | | `atom\|FormItem /template/ Panel#ItemDeleteButtonLayout` | 删除按钮布局容器 | | `atom\|FormItem /template/ atom\|IconButton#ItemDeleteButton` | 删除按钮 | ### SubmitButton / ResetButton 选择器 | 选择器 | 说明 | |---|---| | `atom\|SubmitButton` | 匹配所有提交按钮(继承自 Button,支持所有 Button 选择器) | | `atom\|ResetButton` | 匹配所有重置按钮(继承自 Button,支持所有 Button 选择器) | | `atom\|SubmitButton:disabled` | 匹配禁用状态的提交按钮(如 IsWatchValidateResult 时验证未通过) | ### FormActionsItem 选择器 | 选择器 | 说明 | |---|---| | `atom\|FormActionsItem` | 匹配所有操作区域项(继承自 FormItem) | ### 组合选择器示例 | 选择器 | 说明 | |---|---| | `atom\|FormItem[ValidateStatus=Error] /template/ TextBlock#PART_ErrorMsg` | 错误状态下的错误消息 | | `atom\|FormItem[ValidateStatus=Warning] /template/ TextBlock#HelpText` | 警告状态下的帮助文本 | | `atom\|FormItem[SizeType=Large] /template/ Panel#PART_LabelLayout` | 大号尺寸的标签区域 | | `atom\|FormItem[RequiredMark=Default][IsRequired=True][IsValueItem=True] /template/ TextBlock#PART_DefaultRequireMark` | 默认模式下必填项的星号标记 | | `atom\|FormItem[IsValueItem=True][IsEffectiveShowItemDeleteButton=True] /template/ atom\|IconButton#ItemDeleteButton` | 可删除的数据项的删除按钮 |