Files

135 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OptionButtonGroup Design Token
OptionButtonGroup 和 OptionButton 控件使用 `OptionButtonToken`(Token ID: `"OptionButton"`)作为组件级 Design Token。所有视觉属性均从全局 `SharedToken` 派生,不硬编码任何具体值。
---
## Token 资源访问方式
在 AXAML 中使用组件级 Token:
```xml
{atom:OptionButtonTokenResource ButtonBackground}
{atom:OptionButtonTokenResource ButtonSolidCheckedBackground}
{atom:OptionButtonTokenResource ContentFontSize}
{atom:OptionButtonTokenResource Padding}
```
在 AXAML 中使用全局共享 Token:
```xml
{atom:SharedTokenResource ColorPrimary}
{atom:SharedTokenResource ControlHeight}
{atom:SharedTokenResource BorderRadius}
```
---
## 组件级 Token 一览
以下是 `OptionButtonToken` 定义的全部组件级 Token,按功能分组说明。
### 颜色 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `ButtonBackground` | `Color` | `SharedToken.ColorBgContainer` | 按钮默认背景色 |
| `ButtonCheckedBackground` | `Color` | `SharedToken.ColorBgContainer` | 选中按钮背景色(Outline 模式) |
| `ButtonColor` | `Color` | `SharedToken.ColorText` | 按钮默认文本颜色 |
| `ButtonCheckedBgDisabled` | `Color` | `SharedToken.ControlItemBgActiveDisabled` | 选中并禁用时的背景色 |
| `ButtonCheckedColorDisabled` | `Color` | `SharedToken.ColorTextDisabled` | 选中并禁用时的文本颜色 |
| `ButtonSolidCheckedColor` | `Color` | `SharedToken.ColorTextLightSolid` | Solid 模式选中时文本颜色(通常为白色) |
| `ButtonSolidCheckedBackground` | `Color` | `SharedToken.ColorPrimary` | Solid 模式选中时背景色 |
| `ButtonSolidCheckedHoverBackground` | `Color` | `SharedToken.ColorPrimaryHover` | Solid 模式选中悬浮时背景色 |
| `ButtonSolidCheckedActiveBackground` | `Color` | `SharedToken.ColorPrimaryActive` | Solid 模式选中按下时背景色 |
| `ButtonPadding` | `Thickness` | `SharedToken.UniformlyPadding` | 按钮内间距(水平方向) |
### 字体 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `ContentFontSize` | `double` | `SharedToken.FontSize` | 中号按钮字体大小 |
| `ContentFontSizeLG` | `double` | `SharedToken.FontSizeLG` | 大号按钮字体大小 |
| `ContentFontSizeSM` | `double` | `SharedToken.FontSize` | 小号按钮字体大小 |
| `ContentLineHeight` | `double` | 基于 `ContentFontSize` 计算 | 中号按钮行高 |
| `ContentLineHeightLG` | `double` | 基于 `ContentFontSizeLG` 计算 | 大号按钮行高 |
| `ContentLineHeightSM` | `double` | 基于 `ContentFontSizeSM` 计算 | 小号按钮行高 |
### 内间距 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `Padding` | `Thickness` | 基于 `SharedToken.PaddingContentHorizontal`、`SharedToken.ControlHeight` | 中号按钮内间距 |
| `PaddingLG` | `Thickness` | 基于 `SharedToken.PaddingContentHorizontal`、`SharedToken.ControlHeightSM` | 大号按钮内间距 |
| `PaddingSM` | `Thickness` | 基于固定值 `8`、`SharedToken.ControlHeightLG` | 小号按钮内间距 |
---
## 主题中使用的全局 SharedToken
除组件级 Token 外,OptionButtonGroup 的 ControlTheme 还直接引用了以下全局 `SharedToken`:
### OptionButtonGroup 主题引用
| Token 资源键 | 使用场景 |
|---|---|
| `EnableMotion` | 全局动画开关 |
| `EnableWaveSpirit` | 全局波纹开关 |
| `ControlHeight` / `ControlHeightSM` / `ControlHeightLG` | 三种尺寸的组高度 |
| `BorderRadius` / `BorderRadiusSM` / `BorderRadiusLG` | 三种尺寸的圆角半径 |
| `ColorBorder` | 组外围边框颜色 |
| `ColorPrimary` | 选中项边框颜色(`SelectedOptionBorderColor`) |
| `BorderThickness` | 组外围边框厚度 |
### OptionButton 主题引用
| Token 资源键 | 使用场景 |
|---|---|
| `SpacingXXS` | 图标与文本之间的间距(`DockPanel.HorizontalSpacing`) |
| `ColorText` | 未选中按钮文本颜色(Solid 模式) |
| `ColorPrimary` | 选中按钮前景色和边框色(Outline 模式) |
| `ColorPrimaryHover` | 悬浮时前景色/边框色 |
| `ColorPrimaryActive` | 按下时前景色/边框色 |
| `ColorBorder` | 禁用态边框颜色 |
| `ColorTextDisabled` | 禁用态文本颜色 |
| `ColorBgContainerDisabled` | 禁用态背景色 |
| `IconSize` / `IconSizeSM` / `IconSizeLG` | 三种尺寸的图标大小 |
---
## Token 对外观的具体影响
### 按钮样式与 Token 映射
#### Solid 模式
| 状态 | 前景色 | 背景色 |
|---|---|---|
| 选中 | `ButtonSolidCheckedColor`(白色) | `ButtonSolidCheckedBackground`(主色) |
| 选中 + 悬浮 | `ButtonSolidCheckedColor` | `ButtonSolidCheckedHoverBackground` |
| 选中 + 按下 | `ButtonSolidCheckedColor` | `ButtonSolidCheckedActiveBackground` |
| 未选中 | `ColorText` | 透明 |
| 未选中 + 悬浮 | `ColorPrimaryHover` | 透明 |
| 未选中 + 按下 | `ColorPrimaryActive` | 透明 |
| 禁用 | `ColorTextDisabled` | `ColorBgContainerDisabled` |
| 禁用 + 选中 | `ButtonCheckedColorDisabled` | `ButtonCheckedBgDisabled` |
#### Outline 模式
| 状态 | 前景色 | 边框色 | 背景色 |
|---|---|---|---|
| 选中 | `ColorPrimary` | `ColorPrimary` | 透明 |
| 未选中 | `ButtonColor` | `ColorBorder` | 透明 |
| 悬浮 | `ColorPrimaryHover` | `ColorPrimaryHover` | 透明 |
| 按下 | `ColorPrimaryActive` | `ColorPrimaryActive` | 透明 |
| 禁用 | `ColorTextDisabled` | `ColorBorder` | `ColorBgContainerDisabled` |
| 禁用 + 选中 | `ButtonCheckedColorDisabled` | `ColorBorder` | `ButtonCheckedBgDisabled` |
### 尺寸与 Token 映射
| 尺寸 | 组高度 | 圆角 | 字号 | 内间距 | 图标大小 |
|---|---|---|---|---|---|
| `Large` | `ControlHeightLG` | `BorderRadiusLG` | `ContentFontSizeLG` | `PaddingLG` | `IconSizeLG` |
| `Middle` | `ControlHeight` | `BorderRadius` | `ContentFontSize` | `Padding` | `IconSizeLG` |
| `Small` | `ControlHeightSM` | `BorderRadiusSM` | `ContentFontSizeSM` | `PaddingSM` | `IconSizeSM` |