mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 06:58:57 +08:00
6.3 KiB
6.3 KiB
ComboBox Design Token
ComboBox 控件使用 ComboBoxToken(Token ID: "ComboBox")作为组件级 Design Token,所有视觉属性均从全局 SharedToken 派生,不硬编码任何具体值。
ComboBoxToken 继承自 ButtonSpinnerToken,后者又继承自 LineEditToken,形成三层 Token 继承链:
LineEditToken (字体尺寸)
└── ButtonSpinnerToken (操作按钮/手柄样式)
└── ComboBoxToken (下拉列表项样式)
Token 资源访问方式
在 AXAML 中使用组件级 Token:
{atom:ComboBoxTokenResource PopupContentPadding}
{atom:ComboBoxTokenResource ItemColor}
{atom:ComboBoxTokenResource ItemSelectedBgColor}
在 AXAML 中使用继承自父类的 Token(通过 ButtonSpinner 作用域访问):
{atom:ButtonSpinnerTokenResource HandleHoverColor}
{atom:ButtonSpinnerTokenResource HandleBg}
在 AXAML 中使用全局共享 Token:
{atom:SharedTokenResource ColorPrimary}
{atom:SharedTokenResource ControlHeight}
{atom:SharedTokenResource FontSize}
组件级 Token 一览
以下是 ComboBoxToken 及其父类定义的全部组件级 Token,按继承层级和功能分组说明。
ComboBox 专有 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
PopupContentPadding |
Thickness |
SharedToken.UniformlyPaddingXXS, SharedToken.BorderRadiusLG.TopLeft / 2 |
下拉面板内容区域内边距 |
ItemColor |
Color |
SharedToken.ColorTextSecondary |
列表项正常态文字颜色 |
ItemHoverColor |
Color |
SharedToken.ColorTextSecondary |
列表项悬浮态文字颜色 |
ItemSelectedColor |
Color |
SharedToken.ColorText |
列表项选中态文字颜色 |
ItemDisabledColor |
Color |
SharedToken.ColorTextDisabled |
列表项禁用态文字颜色 |
ItemBgColor |
Color |
SharedToken.ColorBgElevated |
列表项正常态背景色 |
ItemHoverBgColor |
Color |
SharedToken.ColorBgTextHover |
列表项悬浮态背景色 |
ItemSelectedBgColor |
Color |
SharedToken.ControlItemBgActive |
列表项选中态背景色 |
ItemPadding |
Thickness |
SharedToken.UniformlyPaddingSM |
列表项内间距 |
ItemMargin |
Thickness |
固定 (0, 0.5) |
列表项外边距(上下间距) |
继承自 ButtonSpinnerToken(操作手柄相关)
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
ControlWidth |
double |
固定 90 |
控件默认宽度 |
HandleWidth |
double |
SharedToken.ControlHeightSM |
操作按钮宽度 |
HandleIconSize |
double |
SharedToken.FontSize / 2 |
操作按钮图标大小 |
HandleBg |
Color |
SharedToken.ColorBgContainer |
操作按钮背景色 |
HandleActiveBg |
Color |
SharedToken.ColorFillAlter |
操作按钮激活背景色 |
HandleHoverColor |
Color |
SharedToken.ColorPrimary |
操作按钮悬浮文字/图标颜色 |
HandleBorderColor |
Color |
SharedToken.ColorBorder |
操作按钮边框颜色 |
FilledHandleBg |
Color |
基于 SharedToken.ColorFillSecondary + HandleBg 混合 |
面性变体操作按钮背景色 |
继承自 LineEditToken(字体尺寸相关)
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
InputFontSize |
double |
SharedToken.FontSize |
输入区域中号字体大小 |
InputFontSizeLG |
double |
SharedToken.FontSizeLG |
输入区域大号字体大小 |
InputFontSizeSM |
double |
SharedToken.FontSizeSM |
输入区域小号字体大小 |
主题中使用的全局 SharedToken
除组件级 Token 外,ComboBox 的 ControlTheme 还直接引用了以下全局 SharedToken:
| Token 资源键 | 使用场景 |
|---|---|
EnableMotion |
全局动画开关,控制下拉面板展开/收起动画 |
FontSize / FontSizeSM / FontSizeLG |
选中内容字体大小(按 SizeType 分档) |
ControlHeight |
列表项高度(中号) |
IconSizeSM |
下拉手柄箭头图标尺寸 |
SpacingXS |
内部后缀区域元素间距 |
ColorBgElevated |
下拉面板弹出框背景色 |
ColorPrimaryActive |
下拉手柄按下时的图标颜色 |
ColorTextDisabled |
禁用态选项的文字颜色 |
ColorErrorText |
错误状态下 Borderless/Filled 变体的选中内容前景色 |
ColorWarningText |
警告状态下 Borderless/Filled 变体的选中内容前景色 |
BorderRadiusSM |
ComboBoxItem 选项圆角 |
PopupHost Token(下拉面板外观)
| Token 资源键 | 使用场景 |
|---|---|
PopupHostTokenResource MarginToAnchor |
下拉面板与触发控件之间的间距 |
PopupHostTokenResource BoxShadows |
下拉面板阴影 |
PopupHostTokenResource BorderRadius |
下拉面板圆角 |
Token 对外观的具体影响
样式变体与 Token 映射
样式变体(Outlined / Filled / Borderless)的边框/背景样式由 AddOnDecoratedBox 统一管理,ComboBox 本身不直接定义这些 Token。但在错误/警告状态下,不同变体的前景色由 ComboBox 主题覆盖:
| 变体 | 错误态前景色 | 警告态前景色 |
|---|---|---|
Outlined |
由 AddOnDecoratedBox 管理(边框变红) |
由 AddOnDecoratedBox 管理(边框变橙) |
Filled |
ColorErrorText(选中内容变红) |
ColorWarningText(选中内容变橙) |
Borderless |
ColorErrorText(选中内容变红) |
ColorWarningText(选中内容变橙) |
ComboBoxItem 状态与 Token 映射
| 选项状态 | 前景色 Token | 背景色 Token | 附加效果 |
|---|---|---|---|
| 正常态 | ItemColor |
ItemBgColor |
— |
| 悬浮态 | ItemHoverColor |
ItemHoverBgColor |
背景色带过渡动画 |
| 选中态 | ItemSelectedColor |
ItemSelectedBgColor |
FontWeight = SemiBold |
| 禁用态 | ColorTextDisabled |
— | — |
尺寸与 Token 映射
| 尺寸 | 控件字体大小 | 选项字体大小 | 控件高度 |
|---|---|---|---|
Large |
FontSizeLG |
FontSize(OptionFontSize 默认) |
ControlHeightLG(由 AddOnDecoratedBox 控制) |
Middle |
FontSize |
FontSize |
ControlHeight |
Small |
FontSizeSM |
FontSize |
ControlHeightSM |
下拉手柄与 Token 映射
| 手柄状态 | 图标颜色 |
|---|---|
| 正常态 | 默认图标色 |
| 悬浮态 | HandleHoverColor(= ColorPrimary) |
| 按下态 | ColorPrimaryActive |