# Input API 参考 ## 命名空间 ```csharp namespace AtomUI.Desktop.Controls; ``` AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`) --- ## 枚举类型 ### InputControlStyleVariant(来自 `AtomUI.Controls`) 输入框样式变体枚举。 | 值 | 说明 | |---|---| | `Outline` | 带边框的标准样式(默认) | | `Filled` | 填充背景的样式 | | `Borderless` | 无边框样式 | | `Underlined` | 下划线样式 | ### InputControlStatus(来自 `AtomUI.Controls`) 输入框验证状态枚举。 | 值 | 说明 | |---|---| | `Default` | 默认状态 | | `Warning` | 警告状态(橙色边框) | | `Error` | 错误状态(红色边框) | ### SearchEditButtonStyle 搜索按钮样式枚举。 | 值 | 说明 | |---|---| | `Default` | 默认搜索按钮(仅图标) | | `Primary` | 主色调搜索按钮 | ### SizeType(来自 `AtomUI.Controls`) 尺寸类型枚举。 | 值 | 说明 | |---|---| | `Small` | 小号 | | `Middle` | 中号(默认) | | `Large` | 大号 | --- ## TextBox(基类) `AtomUI.Desktop.Controls.TextBox` 是 Input 控件族的底层基类,继承自 `Avalonia.Controls.TextBox`,通过 `using AvaloniaTextBox = Avalonia.Controls.TextBox;` 别名引用避免类名冲突。 ### 公共属性(StyledProperty) | 属性名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `SizeType` | `SizeType` | `SizeType.Middle` | 输入框尺寸(共享属性,通过 `AddOwner` 注册) | | `IsAllowClear` | `bool` | `false` | 是否允许清除内容(显示清除按钮) | | `IsEnableRevealButton` | `bool` | `false` | 是否启用密码可见性切换按钮 | | `IsCustomFontSize` | `bool` | `false` | 是否使用自定义字体大小(为 `true` 时不自动设置 Token 字号) | | `IsShowCount` | `bool` | `false` | 是否显示字符计数(格式:`已输入 / 最大`) | | `ClearIcon` | `PathIcon?` | `CloseCircleFilled` | 清除按钮图标 | | `PlaceholderText` | `string?` | `null` | 占位提示文本(替代 Avalonia 的 `Watermark`) | | `PlaceholderForeground` | `IBrush?` | 由主题控制 | 占位文本前景色 | | `IsMotionEnabled` | `bool` | 跟随全局 Token | 是否启用过渡动画(共享属性) | ### 继承自 Avalonia.Controls.TextBox 的常用属性 | 属性名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `Text` | `string?` | `null` | 输入框文本内容(支持双向绑定) | | `MaxLength` | `int` | `0`(无限制) | 最大输入字符数 | | `IsReadOnly` | `bool` | `false` | 是否只读 | | `PasswordChar` | `char` | `'\0'` | 密码掩码字符(设置后启用密码模式) | | `RevealPassword` | `bool` | `false` | 是否显示密码明文 | | `AcceptsReturn` | `bool` | `false` | 是否接受回车换行 | | `AcceptsTab` | `bool` | `false` | 是否接受 Tab 字符 | | `CaretIndex` | `int` | `0` | 光标位置 | | `SelectionStart` | `int` | `0` | 选区起始位置 | | `SelectionEnd` | `int` | `0` | 选区结束位置 | | `SelectionBrush` | `IBrush?` | 由主题控制 | 选区背景色 | | `SelectionForegroundBrush` | `IBrush?` | 由主题控制 | 选区文本色 | | `CaretBrush` | `IBrush?` | 由主题控制 | 光标颜色 | | `HorizontalContentAlignment` | `HorizontalAlignment` | — | 内容水平对齐 | | `VerticalContentAlignment` | `VerticalAlignment` | `Center` | 内容垂直对齐 | | `IsEnabled` | `bool` | `true` | 是否启用 | | `Foreground` | `IBrush?` | 由主题控制 | 前景色(文本颜色) | | `Background` | `IBrush?` | `Transparent` | 背景色 | | `BorderBrush` | `IBrush?` | 由主题控制 | 边框颜色 | | `BorderThickness` | `Thickness` | 由 Token 控制 | 边框粗细 | | `CornerRadius` | `CornerRadius` | 由 Token 控制 | 圆角半径 | | `FontSize` | `double` | 由 Token 控制 | 字体大小 | | `Padding` | `Thickness` | 由 Token 控制 | 内间距 | ### 实现的接口 | 接口 | 说明 | |---|---| | `ISizeTypeAware` | 支持 `SizeType`(Small / Middle / Large)三种尺寸切换 | | `IMotionAwareControl` | 支持动画开关 | | `ICompactSpaceAware` | 在 `Space.Compact` 中使用时自动调整圆角和边框 | | `IFormItemAware` | 可作为 `FormItem` 的子控件参与表单验证流程 | | `IFormItemFeedbackAware` | 可接收并显示表单验证反馈控件 | --- ## LineEdit `AtomUI.Desktop.Controls.LineEdit` 继承自 `AtomUI.Desktop.Controls.TextBox`,是 Input 控件族对标 Ant Design `Input` 的核心控件。 ### 公共属性(StyledProperty) | 属性名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `StyleVariant` | `InputControlStyleVariant` | `Outline` | 样式变体(共享属性,通过 `AddOwner` 注册) | | `Status` | `InputControlStatus` | `Default` | 验证状态(共享属性,通过 `AddOwner` 注册) | | `LeftAddOn` | `object?` | `null` | 左侧附加组件内容(如 `"http://"`) | | `LeftAddOnTemplate` | `IDataTemplate?` | `null` | 左侧附加组件数据模板 | | `RightAddOn` | `object?` | `null` | 右侧附加组件内容(如 `".com"`) | | `RightAddOnTemplate` | `IDataTemplate?` | `null` | 右侧附加组件数据模板 | | `InnerLeftContentTemplate` | `IDataTemplate?` | `null` | 输入框内侧左装饰元素模板(如用户图标) | | `InnerRightContentTemplate` | `IDataTemplate?` | `null` | 输入框内侧右装饰元素模板 | > 💡 `LeftAddOn` 和 `RightAddOn` 属性使用 `[DependsOn]` 特性标记对相应模板属性的依赖关系。 ### 额外实现的接口 | 接口 | 说明 | |---|---| | `IInputControlStatusAware` | 支持验证状态反馈(Error / Warning) | | `IInputControlStyleVariantAware` | 支持样式变体切换(Outline / Filled / Borderless / Underlined) | ### 伪类(Pseudo-Classes) | 伪类 | 常量 | 触发条件 | |---|---|---| | `:error` | `StdPseudoClass.Error` | `Status == InputControlStatus.Error` | | `:warning` | `StdPseudoClass.Warning` | `Status == InputControlStatus.Warning` | | `:outline` | `AddOnDecoratedBoxPseudoClass.Outline` | `StyleVariant == Outline` | | `:filled` | `AddOnDecoratedBoxPseudoClass.Filled` | `StyleVariant == Filled` | | `:borderless` | `AddOnDecoratedBoxPseudoClass.Borderless` | `StyleVariant == Borderless` | ### 继承的标准伪类 | 伪类 | 触发条件 | |---|---| | `:pointerover` | 鼠标悬浮 | | `:focus` | 获得焦点 | | `:focus-visible` | 通过键盘获得焦点 | | `:disabled` | `IsEnabled == false` | | `:empty` | 文本为空 | --- ## SearchEdit `AtomUI.Desktop.Controls.SearchEdit` 继承自 `LineEdit`,对标 Ant Design `Input.Search`。 ### 公共属性(StyledProperty) | 属性名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `SearchButtonStyle` | `SearchEditButtonStyle` | `Default` | 搜索按钮样式(Default 为仅图标,Primary 为主色调按钮) | | `SearchButtonText` | `string` | `""` | 搜索按钮文字(为空时仅显示搜索图标) | | `IsOperating` | `bool` | `false` | 是否处于加载状态(显示加载动画,阻止搜索按钮点击) | ### 事件 | 事件名 | 类型 | 路由策略 | 说明 | |---|---|---|---| | `SearchButtonClick` | `EventHandler` | `Bubble` | 搜索按钮点击事件 | ### 使用说明 - SearchEdit 继承了 LineEdit 和 TextBox 的所有属性、伪类和接口。 - 当 `IsOperating == true` 时,`SearchButtonClick` 事件不会触发(防止重复操作)。 - SearchEdit 初始化时会自动设置 `ClearIcon` 为 `CloseCircleFilled`。 --- ## TextArea `AtomUI.Desktop.Controls.TextArea` 独立继承自 `Avalonia.Controls.TextBox`(不经过 AtomUI TextBox),对标 Ant Design `Input.TextArea`。 ### 公共属性(StyledProperty) | 属性名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `ClearIcon` | `PathIcon?` | `null` | 清除按钮图标 | | `Lines` | `int` | `2` | 显示行数(自动计算高度) | | `IsAutoSize` | `bool` | `false` | 是否根据内容自动调整高度 | | `IsShowCount` | `bool` | `false` | 是否显示字符计数 | | `IsResizable` | `bool` | `false` | 是否可拖拽调整高度(右下角显示拖拽手柄) | | `StyleVariant` | `InputControlStyleVariant` | `Outline` | 样式变体 | | `Status` | `InputControlStatus` | `Default` | 验证状态 | | `SizeType` | `SizeType` | `Middle` | 尺寸类型 | | `IsAllowClear` | `bool` | `false` | 是否允许清除内容 | | `PlaceholderText` | `string?` | `null` | 占位提示文本 | | `PlaceholderForeground` | `IBrush?` | 由主题控制 | 占位文本前景色 | | `IsMotionEnabled` | `bool` | 跟随全局 Token | 是否启用过渡动画 | | `InnerLeftContentTemplate` | `IDataTemplate?` | `null` | 输入框内侧左装饰模板 | | `InnerRightContentTemplate` | `IDataTemplate?` | `null` | 输入框内侧右装饰模板 | ### 继承自 Avalonia TextBox 的重要属性 | 属性名 | 类型 | TextArea 默认值 | 说明 | |---|---|---|---| | `MinLines` | `int` | `1` | 最少显示行数 | | `MaxLines` | `int` | `0`(无限制) | 最多显示行数 | | `MaxLength` | `int` | `0`(无限制) | 最大输入字符数 | | `TextWrapping` | `TextWrapping` | `Wrap` | 文本换行模式(TextArea 默认开启换行) | | `AcceptsReturn` | `bool` | `true` | 是否接受回车换行(TextArea 默认开启) | ### 伪类 TextArea 支持与 LineEdit 相同的伪类:`:error`、`:warning`、`:outline`、`:filled`、`:borderless`、`:disabled`。 ### 实现的接口 | 接口 | 说明 | |---|---| | `ISizeTypeAware` | 尺寸切换 | | `IMotionAwareControl` | 动画开关 | | `IInputControlStatusAware` | 验证状态反馈 | | `IInputControlStyleVariantAware` | 样式变体切换 | | `IFormItemAware` | 表单集成 | | `IFormItemFeedbackAware` | 表单反馈 | ### Lines 属性约束 `Lines` 属性的值必须在 `MinLines` 和 `MaxLines`(如果已设置)之间,否则会抛出 `ArgumentOutOfRangeException`。