mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 06:58:57 +08:00
3.9 KiB
3.9 KiB
Statistic Design Token
Statistic 控件家族使用 StatisticToken(Token ID: "Statistic")作为组件级 Design Token。Token 较为精简,主要控制标题和内容的字体大小。所有颜色值均直接引用全局 SharedToken。
Token 资源访问方式
在 AXAML 中使用组件级 Token:
{atom:StatisticTokenResource TitleFontSize}
{atom:StatisticTokenResource ContentFontSize}
在 AXAML 中使用全局共享 Token:
{atom:SharedTokenResource ColorTextDescription}
{atom:SharedTokenResource ColorTextHeading}
{atom:SharedTokenResource SpacingXXS}
组件级 Token 一览
以下是 StatisticToken 定义的全部组件级 Token。
字体 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
TitleFontSize |
double |
SharedToken.FontSize |
标题(Header)字体大小,默认等于全局基础字号(14px) |
ContentFontSize |
double |
SharedToken.FontSizeHeading3 |
数值内容字体大小,默认等于 Heading3 字号(24px),使数值成为视觉焦点 |
主题中使用的全局 SharedToken
除组件级 Token 外,Statistic 的 ControlTheme 还直接引用了以下全局 SharedToken:
颜色 Token
| Token 资源键 | 使用场景 |
|---|---|
ColorTextDescription |
标题(HeaderPresenter)的前景色,使用描述性文本色(较浅,突出数值) |
ColorTextHeading |
数值内容(ContentForeground)的默认前景色,使用标题文本色(较深,作为视觉焦点) |
间距 Token
| Token 资源键 | 使用场景 |
|---|---|
SpacingXXS |
RootLayout(标题与内容之间)的默认间距 |
Spacing |
加载态下(IsLoading=True)RootLayout 的间距(增大间距给骨架屏更多空间) |
SpacingXXS |
ContentLayout(前缀、数值、后缀之间)的间距 |
遮罩/背景 Token
| Token 资源键 | 使用场景 |
|---|---|
ColorBgMask |
加载骨架屏(Skeleton)的遮罩背景色 |
动画 Token
| Token 资源键 | 使用场景 |
|---|---|
MotionDurationVerySlow |
StatisticCountUp 数值递增动画的时长 |
Token 对外观的具体影响
字体层次结构
Statistic 通过字体大小的对比建立视觉层次:
| 区域 | Token | 默认值 | 视觉效果 |
|---|---|---|---|
| 标题 | TitleFontSize |
14px(FontSize) |
较小字号,描述性文字 |
| 数值 | ContentFontSize |
24px(FontSizeHeading3) |
较大字号,视觉焦点 |
颜色层次结构
| 区域 | SharedToken | 视觉效果 |
|---|---|---|
| 标题 | ColorTextDescription |
较浅的灰色调,提供语义上下文但不抢夺注意力 |
| 数值 | ColorTextHeading |
较深的标题色,作为视觉焦点突出显示 |
前缀/后缀中图标的尺寸
模板中前缀/后缀区域内的 Icon 控件,其 Width 和 Height 均绑定为 StatisticTokenResource ContentFontSize(即与数值字号一致),确保图标与数值文字视觉对齐。同时图标的 FillBrush 和 StrokeBrush 继承自 ContentForeground,确保颜色一致性。
各控件的 Token 继承关系
StatisticToken (组件级 Token 定义)
├── AbstractStatisticTheme.axaml (基类主题,引用 TitleFontSize / ContentFontSize / SharedToken 颜色)
│ ├── StatisticTheme.axaml (Statistic 主题,基于 AbstractStatisticTheme,增加间距)
│ └── TimerStatisticTheme.axaml (TimerStatistic 主题,基于 AbstractStatisticTheme,使用独立模板)
└── StatisticCountUpTheme.axaml (StatisticCountUp 主题,直接引用 ContentFontSize / ColorTextHeading)
所有三个控件(Statistic、TimerStatistic、StatisticCountUp)共享同一个 StatisticToken 作用域,通过 this.RegisterTokenResourceScope(StatisticToken.ScopeProvider) 注册。这意味着修改 StatisticToken 中的 ContentFontSize 会同时影响所有三个控件的数值显示大小。