# MessageBox Design Token MessageBox 使用 `MessageBoxToken`(Token ID: `"MessageBox"`)作为组件级 Design Token。MessageBox 的 Token 非常精简,大部分视觉属性继承自 Dialog 系统的 Token(`DialogToken`)。 > 📖 Token 源码位置:`src/AtomUI.Desktop.Controls/MessageBox/MessageBoxToken.cs` --- ## Token 资源访问方式 ### AXAML 中访问 ```xml {atom:MessageBoxTokenResource StyleIconSize} {atom:SharedTokenResource ColorInfo} {atom:SharedTokenResource ColorSuccess} {atom:SharedTokenResource ColorWarning} {atom:SharedTokenResource ColorError} {atom:SharedTokenResource SpacingSM} ``` --- ## Token 类定义 ```csharp [ControlDesignToken] internal class MessageBoxToken : AbstractControlDesignToken { public const string ID = "MessageBox"; // ... } ``` > ⚠️ 注意:MessageBox 本身注册的 Token Scope 是 `DialogToken.ScopeProvider`(而非 `MessageBoxToken.ScopeProvider`),因为 MessageBox 复用了 Dialog 的大部分主题基础设施。`MessageBoxToken` 仅定义 MessageBox 独有的扩展 Token。 --- ## 完整 Token 属性列表 ### MessageBox 专属 Token | Token 属性 | 类型 | 派生自 SharedToken | 说明 | |---|---|---|---| | `StyleIconSize` | `double` | `SizeLG × 1.2` | 语义样式图标的尺寸(宽度和高度) | > `StyleIconSize` 的计算公式:`SharedToken.SizeLG * 1.2`。默认情况下 `SizeLG` 为 24,因此 `StyleIconSize` 约为 28.8px。 --- ## 主题中使用的全局 SharedToken 除组件级 Token 外,MessageBox 的宿主主题还直接引用了以下全局 `SharedToken`: | Token 资源键 | 使用场景 | |---|---| | `EnableMotion` | 全局动画开关 | | `ColorInfo` | Information 样式图标颜色(蓝色) | | `ColorSuccess` | Success 样式图标颜色(绿色) | | `ColorWarning` | Warning / Confirm 样式图标颜色(黄色) | | `ColorError` | Error 样式图标颜色(红色) | | `SpacingSM` | 图标与内容之间的水平间距 | ### 继承自 Dialog 系统的 Token MessageBox 复用 Dialog 的主题基础设施,因此还间接使用了 `DialogToken` 中定义的以下 Token(参见 Dialog 文档): | Token 来源 | 影响区域 | |---|---| | Dialog 背景色、边框、圆角 | 弹窗容器外观 | | Dialog 标题栏样式 | 标题文本、关闭按钮 | | Dialog 按钮区样式 | 底部按钮区的内边距和布局 | | Dialog 内容区内边距 | 正文内容的内间距 | --- ## Token 在主题中的使用示例 ### MessageBoxDialogHostTheme.axaml 中的 Token 引用 ```xml ... ``` --- ## Token 对外观的具体影响 ### 消息样式与颜色 Token 映射 | 消息样式 | 图标颜色 Token | 默认颜色 | |---|---|---| | `Normal` | —(无图标) | — | | `Confirm` | `SharedToken.ColorWarning` | 黄色(`#faad14`) | | `Information` | `SharedToken.ColorInfo` | 蓝色(`#1677ff`) | | `Success` | `SharedToken.ColorSuccess` | 绿色(`#52c41a`) | | `Warning` | `SharedToken.ColorWarning` | 黄色(`#faad14`) | | `Error` | `SharedToken.ColorError` | 红色(`#ff4d4f`) | ### 视觉布局 Token 映射 | 视觉属性 | Token | 说明 | |---|---|---| | 语义图标大小 | `MessageBoxToken.StyleIconSize` ← `SizeLG × 1.2` | 约 28.8px | | 图标与内容间距 | `SharedToken.SpacingSM` | 小号间距(8px) | | 弹窗背景/边框/圆角 | 继承自 `DialogToken` | 由 Dialog 主题控制 | | 标题栏样式 | 继承自 `DialogToken` | 由 Dialog 主题控制 | | 按钮区样式 | 继承自 `DialogToken` | 由 Dialog 主题控制 | --- ## Token 派生链总结 ``` SharedToken (DesignToken) ├── SizeLG → StyleIconSize(语义图标大小,× 1.2) ├── ColorInfo → Information 图标颜色 ├── ColorSuccess → Success 图标颜色 ├── ColorWarning → Warning / Confirm 图标颜色 ├── ColorError → Error 图标颜色 ├── SpacingSM → 图标与内容间距 ├── EnableMotion → 动画开关 └── (DialogToken 继承) → 弹窗容器、标题栏、按钮区样式 ```