Files

6.5 KiB
Raw Permalink Blame History

DropdownButton Design Token

DropdownButton 继承自 Button,复用 ButtonToken(Token ID: "Button")作为组件级 Design Token 作用域。DropdownButton 自身没有定义独立的 Token 类——所有按钮相关的颜色、间距、字体 Token 均与 Button 共享。


Token 资源访问方式

在 AXAML 中使用组件级 Token(来自 ButtonToken):

{atom:ButtonTokenResource PrimaryColor}
{atom:ButtonTokenResource DefaultBg}
{atom:ButtonTokenResource Padding}
{atom:ButtonTokenResource ExtraContentMargin}

在 AXAML 中使用全局共享 Token:

{atom:SharedTokenResource ColorPrimary}
{atom:SharedTokenResource IconSizeSM}
{atom:SharedTokenResource ControlHeight}

在 AXAML 中使用弹出层 Token:

{atom:PopupHostTokenResource MarginToAnchor}

DropdownButton 使用的关键 Token

DropdownButton 主要消费 ButtonToken、SharedToken 和 PopupHostToken。

来自 ButtonToken

所有按钮外观相关 Token(详见 ButtonToken.md)均适用。以下列出与 DropdownButton 最相关的 Token:

颜色 Token

Token 名 类型 来源 说明
PrimaryColor Color SharedToken.ColorTextLightSolid Primary 类型按钮文本颜色(通常为白色)
DefaultColor Color SharedToken.ColorText Default 类型按钮文本颜色
DefaultBg Color SharedToken.ColorBgContainer Default 类型按钮背景色
DefaultBorderColor Color SharedToken.ColorBorder Default 类型按钮边框颜色
DefaultHoverColor Color SharedToken.ColorPrimaryHover Default 按钮悬浮态文本颜色
DefaultHoverBorderColor Color SharedToken.ColorPrimaryHover Default 按钮悬浮态边框颜色
DefaultActiveColor Color SharedToken.ColorPrimaryActive Default 按钮激活态文本颜色
DefaultActiveBorderColor Color SharedToken.ColorPrimaryActive Default 按钮激活态边框颜色
LinkHoverBg Color Colors.Transparent Link 按钮悬浮态背景色
TextHoverBg Color SharedToken.ColorBgTextHover Text 按钮悬浮态背景色

阴影 Token

Token 名 类型 来源 说明
DefaultShadow BoxShadows 基于 SharedToken.ColorControlOutline Default 按钮底部微阴影
PrimaryShadow BoxShadows 基于 SharedToken.ColorControlOutline Primary 按钮底部微阴影
DangerShadow BoxShadows 基于 SharedToken.ColorErrorOutline 危险按钮阴影

内间距 Token

Token 名 类型 来源 说明
Padding Thickness 基于 SharedToken.PaddingContentHorizontal、SharedToken.ControlHeight 中号按钮内间距
PaddingLG Thickness 基于 SharedToken.PaddingContentHorizontal、SharedToken.ControlHeightLG 大号按钮内间距
PaddingSM Thickness 基于 SharedToken.ControlHeightSM 小号按钮内间距

额外内容区域 Token(DropdownButton 下拉指示器使用)

Token 名 类型 来源 说明
ExtraContentMargin Thickness Padding.Left / 2 中号下拉指示器左侧外边距
ExtraContentMarginLG Thickness PaddingLG.Left / 2 大号下拉指示器左侧外边距
ExtraContentMarginSM Thickness PaddingSM.Left / 2 小号下拉指示器左侧外边距

字体 Token

Token 名 类型 来源 说明
ContentFontSize double SharedToken.FontSize 中号按钮字体大小
ContentFontSizeLG double SharedToken.FontSizeLG 大号按钮字体大小
ContentFontSizeSM double SharedToken.FontSize 小号按钮字体大小
FontWeight double 固定 400 按钮文字字重

来自 SharedToken

Token 资源键 使用场景
IconSizeSM 下拉指示器图标的宽高尺寸
ColorPrimary / ColorPrimaryHover / ColorPrimaryActive Primary 类型按钮主色调及其交互态
ColorError / ColorErrorHover / ColorErrorActive 危险样式色系
ColorLink / ColorLinkHover / ColorLinkActive Link 类型按钮色系
ColorText / ColorTextDisabled 文本色 / 禁用文本色
ColorBgContainer / ColorBgContainerDisabled 容器背景色
ColorBorder 边框颜色
ControlHeight / ControlHeightSM / ControlHeightLG 按钮高度(中 / 小 / 大)
BorderRadius / BorderRadiusSM / BorderRadiusLG 圆角半径(中 / 小 / 大)
BorderThickness 默认边框厚度
EnableMotion 全局动画开关

来自 PopupHostToken

Token 资源键 使用场景
MarginToAnchor 弹出菜单与按钮之间的默认间距

Token 对外观的具体影响

按钮类型与 Token 映射

DropdownButton 的颜色方案与 Button 完全一致:

按钮类型 正常态 悬浮态 按下态 禁用态
Default DefaultColor / DefaultBg / DefaultBorderColor DefaultHoverColor / DefaultHoverBorderColor DefaultActiveColor / DefaultActiveBorderColor ColorTextDisabled / ColorBgContainerDisabled
Primary PrimaryColor / ColorPrimary - / ColorPrimaryHover - / ColorPrimaryActive ColorTextDisabled / ColorBgContainerDisabled
Link ColorLink / 透明 ColorLinkHover ColorLinkActive ColorTextDisabled / 透明
Text DefaultColor / 透明 - / TextHoverBg - / ColorBgTextActive ColorTextDisabled / 透明

下拉指示器 Token 映射

尺寸 图标大小 指示器左边距
Large SharedToken.IconSizeSM ButtonToken.ExtraContentMarginLG
Middle SharedToken.IconSizeSM ButtonToken.ExtraContentMargin
Small SharedToken.IconSizeSM ButtonToken.ExtraContentMarginSM

下拉指示器的 IconBrush 绑定按钮的 Foreground,因此颜色跟随按钮类型和状态自动变化。

危险态下的 Token 覆盖

当 IsDanger=True 时,色系替换为 Error 色系(ColorError / ColorErrorHover / ColorErrorActive),阴影替换为 DangerShadow。

尺寸与 Token 映射

尺寸 高度 内间距 字号 圆角
Large ControlHeightLG PaddingLG ContentFontSizeLG BorderRadiusLG
Middle ControlHeight Padding ContentFontSize BorderRadius
Small ControlHeightSM PaddingSM ContentFontSizeSM BorderRadiusSM