Files

5.9 KiB
Raw Permalink Blame History

Collapse Design Token

Collapse 控件使用 CollapseToken(Token ID: "Collapse")作为组件级 Design Token,所有视觉属性均从全局 SharedToken 派生,不硬编码任何具体值。


Token 资源访问方式

在 AXAML 中使用组件级 Token:

{atom:CollapseTokenResource HeaderPadding}
{atom:CollapseTokenResource HeaderBg}
{atom:CollapseTokenResource ContentPadding}
{atom:CollapseTokenResource ContentBg}

在 AXAML 中使用全局共享 Token:

{atom:SharedTokenResource ColorBorder}
{atom:SharedTokenResource ColorFillAlter}
{atom:SharedTokenResource BorderThickness}

组件级 Token 一览

以下是 CollapseToken 定义的全部组件级 Token,按功能分组说明。

间距 Token — 头部内间距

Token 名 类型 来源 说明
HeaderPadding Thickness (SharedToken.UniformlyPadding, SharedToken.UniformlyPaddingSM) 中号头部内间距
CollapseHeaderPaddingSM Thickness (SharedToken.UniformlyPaddingSM, SharedToken.UniformlyPaddingXS) 小号头部内间距
CollapseHeaderPaddingLG Thickness (SharedToken.UniformlyPaddingLG, SharedToken.UniformlyPadding) 大号头部内间距

间距 Token — 内容内间距

Token 名 类型 来源 说明
ContentPadding Thickness (16, SharedToken.UniformlyPadding) 中号内容内间距
CollapseContentPaddingSM Thickness SharedToken.PaddingSM 小号内容内间距
CollapseContentPaddingLG Thickness SharedToken.PaddingLG 大号内容内间距

颜色 Token

Token 名 类型 来源 说明
HeaderBg Color SharedToken.ColorFillAlter 头部背景色(默认模式下)
ContentBg Color SharedToken.ColorBgContainer 内容区域背景色

展开按钮间距 Token

展开按钮在不同尺寸和位置下使用不同的间距值:

Token 名 类型 来源 说明
LeftExpandButtonMarginSM Thickness (0, 0, SharedToken.UniformlyMarginXXS, 0) 小号-左侧展开按钮右间距
LeftExpandButtonMargin Thickness (0, 0, SharedToken.UniformlyMarginXS, 0) 中号-左侧展开按钮右间距
LeftExpandButtonMarginLG Thickness (0, 0, SharedToken.UniformlyMarginSM, 0) 大号-左侧展开按钮右间距
RightExpandButtonMarginSM Thickness (SharedToken.UniformlyMarginXXS, 0, 0, 0) 小号-右侧展开按钮左间距
RightExpandButtonMargin Thickness (SharedToken.UniformlyMarginXS, 0, 0, 0) 中号-右侧展开按钮左间距
RightExpandButtonMarginLG Thickness (SharedToken.UniformlyMarginSM, 0, 0, 0) 大号-右侧展开按钮左间距

圆角 Token

Token 名 类型 来源 说明
CollapsePanelBorderRadius CornerRadius SharedToken.BorderRadiusLG 折叠面板外框圆角

主题中使用的全局 SharedToken

除组件级 Token 外,Collapse 的 ControlTheme 还直接引用了以下全局 SharedToken:

Token 资源键 使用场景
BorderThickness 面板默认边框厚度
ColorBorder 面板边框颜色、头部分隔线颜色、内容分隔线颜色
EnableMotion 全局动画开关
MotionDurationSlow 折叠/展开动画时长
ColorTextHeading 头部标题文本颜色
ColorTextDisabled 禁用态文本颜色
FontSize 中号/小号头部字体大小
FontSizeLG 大号头部字体大小
FontHeight 中号/小号头部行高
FontHeightLG 大号头部行高
IconSizeSM 展开图标尺寸

Token 对外观的具体影响

尺寸与 Token 映射

尺寸 头部内间距 内容内间距 头部字号 头部行高 展开按钮左侧间距 展开按钮右侧间距
Large CollapseHeaderPaddingLG CollapseContentPaddingLG FontSizeLG FontHeightLG LeftExpandButtonMarginLG RightExpandButtonMarginLG
Middle HeaderPadding ContentPadding FontSize FontHeight LeftExpandButtonMargin RightExpandButtonMargin
Small CollapseHeaderPaddingSM CollapseContentPaddingSM FontSize FontHeight LeftExpandButtonMarginSM RightExpandButtonMarginSM

样式模式与 Token 覆盖

样式模式 属性设置 Token 变化
默认 — 头部背景 = HeaderBg(ColorFillAlter),内容背景 = 无(透明),外框边框 = BorderThickness + ColorBorder
无边框 IsBorderless=True 外框 EffectiveBorderThickness = 0 内容区域背景变为 HeaderBg(ColorFillAlter)
幽灵 IsGhostStyle=True 外框 EffectiveBorderThickness = 0 头部背景变为 ContentBg(ColorBgContainer),边框全部为 0

禁用态

当 IsEnabled = false 时:

  • 头部标题前景色变为 ColorTextDisabled
  • 所有子内容的前景色也变为 ColorTextDisabled

展开图标位置与间距

展开图标按钮的间距随 ExpandIconPosition 和 SizeType 的组合变化:

图标位置 Grid 列 间距 Token(以中号为例)
Start(左侧) Column 0 LeftExpandButtonMargin = (0, 0, UniformlyMarginXS, 0) — 右侧有间距
End(右侧) Column 3 RightExpandButtonMargin = (UniformlyMarginXS, 0, 0, 0) — 左侧有间距

自定义间距优先级

ItemHeaderPadding / ItemContentPadding(Collapse 级)和 HeaderPadding / ContentPadding(CollapseItem 级)会触发 :custom-header-padding / :custom-content-padding 伪类,此时 Token 定义的尺寸相关间距(如 HeaderPadding、CollapseHeaderPaddingSM 等)不再生效。

优先级关系:

CollapseItem.HeaderPadding(直接设置) > Collapse.ItemHeaderPadding(批量设置) > Token 默认值(按 SizeType)