# Input 自定义样式指南 Input 控件族的视觉表现通过 `ControlTheme` + Design Token 系统控制。以下介绍各种常见的自定义方式。 --- ## 1. 使用属性直接控制 最简单的方式是通过 Input 控件的公共属性来控制外观: ```xml ``` > 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/LineEditShowCase.axaml` --- ## 2. 通过 Style 覆盖样式 可以在 AXAML 中使用 `Style` 对 Input 控件进行全局或局部样式覆盖: ### 全局统一间距 ```xml ``` ### 按样式变体定制 ```xml ``` ### 使用伪类选择器 ```xml ``` ### 按尺寸选择 ```xml ``` --- ## 3. 通过 ControlTheme 完全替换主题 如果需要彻底替换输入框的模板和样式,可以定义自定义 `ControlTheme`: ```xml ``` > ⚠️ 注意:完全替换 ControlTheme 将丢失内置的 AddOnDecoratedBox 装饰能力、清除按钮、密码切换按钮等功能。建议优先使用 Style 覆盖。 --- ## 4. 控制动画行为 ```xml ``` --- ## 样式选择器速查 > 说明:Avalonia 样式选择器中使用 `atom|LineEdit` 语法引用 `atom` XML 命名空间下的 `LineEdit` 类型,其中 `|` 是命名空间分隔符。 ### LineEdit 选择器 | 选择器 | 说明 | |---|---| | `atom\|LineEdit` | 匹配所有 LineEdit 实例 | | `atom\|LineEdit[StyleVariant=Outline]` | 匹配 Outline 样式变体 | | `atom\|LineEdit[StyleVariant=Filled]` | 匹配 Filled 样式变体 | | `atom\|LineEdit[StyleVariant=Borderless]` | 匹配 Borderless 样式变体 | | `atom\|LineEdit[StyleVariant=Underlined]` | 匹配 Underlined 样式变体 | | `atom\|LineEdit[SizeType=Large]` | 匹配大号输入框 | | `atom\|LineEdit[SizeType=Middle]` | 匹配中号输入框(默认) | | `atom\|LineEdit[SizeType=Small]` | 匹配小号输入框 | | `atom\|LineEdit[Status=Error]` | 匹配错误状态(等同于 `:error`) | | `atom\|LineEdit[Status=Warning]` | 匹配警告状态(等同于 `:warning`) | ### 伪类选择器 | 选择器 | 说明 | |---|---| | `atom\|LineEdit:error` | 匹配错误验证状态 | | `atom\|LineEdit:warning` | 匹配警告验证状态 | | `atom\|LineEdit:outline` | 匹配 Outline 样式(由伪类驱动) | | `atom\|LineEdit:filled` | 匹配 Filled 样式(由伪类驱动) | | `atom\|LineEdit:borderless` | 匹配 Borderless 样式(由伪类驱动) | | `atom\|LineEdit:pointerover` | 鼠标悬浮状态 | | `atom\|LineEdit:focus` | 获得焦点状态 | | `atom\|LineEdit:focus-visible` | 通过键盘获得焦点 | | `atom\|LineEdit:disabled` | 禁用状态 | | `atom\|LineEdit:empty` | 文本为空 | ### SearchEdit 选择器 | 选择器 | 说明 | |---|---| | `atom\|SearchEdit` | 匹配所有 SearchEdit 实例 | | `atom\|SearchEdit[SearchButtonStyle=Primary]` | 匹配主色调搜索按钮风格 | | `atom\|SearchEdit[IsOperating=True]` | 匹配加载中状态 | ### TextArea 选择器 | 选择器 | 说明 | |---|---| | `atom\|TextArea` | 匹配所有 TextArea 实例 | | `atom\|TextArea[StyleVariant=Filled]` | 匹配 Filled 样式变体 | | `atom\|TextArea[IsResizable=True]` | 匹配可拖拽调整大小的 TextArea | | `atom\|TextArea:error` | 匹配错误验证状态 | | `atom\|TextArea:warning` | 匹配警告验证状态 | ### 组合选择器示例 | 选择器 | 说明 | |---|---| | `atom\|LineEdit[StyleVariant=Outline]:not(:disabled):focus` | 聚焦状态的 Outline 输入框 | | `atom\|LineEdit[StyleVariant=Filled]:error:pointerover` | 悬浮状态的错误 Filled 输入框 | | `atom\|LineEdit[SizeType=Large]:not(:disabled)` | 非禁用的大号输入框 | | `atom\|LineEdit /template/ ScrollViewer#PART_ScrollViewer` | 访问输入框模板内的 ScrollViewer | | `atom\|TextArea /template/ Panel#ContentLayout` | 访问 TextArea 模板内的内容面板 |