mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-18 22:46:38 +08:00
6.0 KiB
6.0 KiB
ComboBox API 参考
命名空间
namespace AtomUI.Desktop.Controls;
AXAML 命名空间前缀:atom(xmlns:atom="https://atomui.net")
枚举类型
InputControlStyleVariant
样式变体枚举,定义控件的视觉风格。
| 值 | 说明 |
|---|---|
Outline |
描边样式(默认),白色背景 + 实线边框 |
Filled |
填充样式,灰色填充背景 |
Borderless |
无边框样式,无背景无边框 |
InputControlStatus
输入控件验证状态枚举。
| 值 | 说明 |
|---|---|
Default |
默认状态(无验证反馈) |
Error |
错误状态,红色系视觉反馈 |
Warning |
警告状态,橙色系视觉反馈 |
SizeType(来自 AtomUI.Controls)
尺寸类型枚举。
| 值 | 说明 |
|---|---|
Small |
小号(24px) |
Middle |
中号(默认,32px) |
Large |
大号(40px) |
公共属性(StyledProperty)
AddOn 扩展区域属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
LeftAddOn |
object? |
null |
前置标签内容(选择器外部左侧),支持文本或控件 |
LeftAddOnTemplate |
IDataTemplate? |
null |
前置标签的数据模板 |
RightAddOn |
object? |
null |
后置标签内容(选择器外部右侧),支持文本或控件 |
RightAddOnTemplate |
IDataTemplate? |
null |
后置标签的数据模板 |
ContentLeftAddOn |
object? |
null |
内部前缀内容(内容区域左侧),常用于图标 |
ContentLeftAddOnTemplate |
IDataTemplate? |
null |
内部前缀的数据模板 |
ContentRightAddOn |
object? |
null |
内部后缀内容(内容区域右侧,手柄左侧) |
ContentRightAddOnTemplate |
IDataTemplate? |
null |
内部后缀的数据模板 |
外观与行为属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
SizeType |
SizeType |
SizeType.Middle |
控件尺寸(共享属性,通过 AddOwner 注册) |
StyleVariant |
InputControlStyleVariant |
InputControlStyleVariant.Outline |
样式变体(共享属性) |
Status |
InputControlStatus |
InputControlStatus.Default |
验证状态(共享属性) |
IsAllowClear |
bool |
false |
是否允许清除已选值 |
OptionFontSize |
double |
由 Token 控制 | 下拉选项列表的字体大小 |
IsMotionEnabled |
bool |
跟随全局 Token | 是否启用过渡动画(共享属性) |
DropDownDisplayPageSize |
int |
10 |
下拉面板最多可见选项数量,超出部分滚动显示 |
继承自 Avalonia.Controls.ComboBox 的常用属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ItemsSource |
IEnumerable? |
null |
数据源集合,支持绑定任意集合 |
ItemTemplate |
IDataTemplate? |
null |
项目数据模板,定义每个选项的呈现方式 |
SelectedItem |
object? |
null |
当前选中项,支持双向绑定 |
SelectedIndex |
int |
-1 |
当前选中项索引 |
PlaceholderText |
string? |
null |
未选中时显示的占位提示文本 |
IsDropDownOpen |
bool |
false |
下拉面板是否打开 |
MaxDropDownHeight |
double |
自动计算 | 下拉面板最大高度(由 DropDownDisplayPageSize 自动派生) |
ItemsPanel |
ItemsPanelTemplate |
VirtualizingStackPanel |
项目面板模板 |
IsEnabled |
bool |
true |
是否启用 |
Width |
double |
NaN |
控件宽度 |
事件
| 事件名 | 类型 | 说明 |
|---|---|---|
SelectionChanged |
EventHandler<SelectionChangedEventArgs> |
选中项变更事件(继承自 SelectingItemsControl) |
伪类(Pseudo-Classes)
ComboBox 支持以下伪类,可在样式选择器中使用:
| 伪类 | 触发条件 |
|---|---|
:error |
Status == InputControlStatus.Error |
:warning |
Status == InputControlStatus.Warning |
继承的标准伪类
| 伪类 | 触发条件 |
|---|---|
:pointerover |
鼠标悬浮 |
:pressed |
控件被按下(非下拉打开状态下) |
:disabled |
IsEnabled == false |
:focus |
获得焦点 |
:focus-visible |
通过键盘获得焦点(显示焦点框) |
实现的接口
IMotionAwareControl
public bool IsMotionEnabled { get; set; }
控制下拉面板展开/收起动画、ComboBoxItem 背景色过渡动画的开关。
ISizeTypeAware
public SizeType SizeType { get; set; }
支持 Small(24px)、Middle(32px,默认)、Large(40px)三种尺寸。尺寸会同步传递给内部的 AddOnDecoratedBox 和 ComboBoxItem。
IInputControlStatusAware
public InputControlStatus Status { get; set; }
支持 Default、Error、Warning 三种验证状态。状态变更时自动更新对应伪类(:error、:warning)。
IInputControlStyleVariantAware
public InputControlStyleVariant StyleVariant { get; set; }
支持 Outline、Filled、Borderless 三种样式变体。变体会传递给内部的 AddOnDecoratedBox。
IFormItemAware
可作为 FormItem 的子控件参与表单验证流程。ComboBox 提供以下行为:
- 选中项变更时通过
ValueChanged事件通知 FormItem - FormItem 验证状态(
FormValidateStatus)自动映射为Status属性
IFormItemFeedbackAware
可接收并显示表单验证反馈控件(FormValidateFeedback),反馈图标显示在下拉手柄左侧。
辅助控件
ComboBoxItem
下拉选项容器,继承自 Avalonia.Controls.ComboBoxItem。
| 伪类 | 说明 |
|---|---|
:pointerover |
鼠标悬浮在选项上 |
:selected |
选项被选中 |
:disabled |
选项被禁用 |
ComboBoxHandle(内部控件)
下拉手柄组件,包含一个 IconButton(DownOutlined 图标)。
| 属性名 | 类型 | 说明 |
|---|---|---|
IsMotionEnabled |
bool |
是否启用动画 |
| 事件名 | 类型 | 说明 |
|---|---|---|
HandleClick |
EventHandler<RoutedEventArgs> |
手柄被点击 |