Files

5.4 KiB
Raw Permalink Blame History

NumericUpDown Design Token

NumericUpDown 控件使用 NumericUpDownToken(Token ID: "NumericUpDown")作为组件级 Design Token。NumericUpDownToken 本身不定义任何新的 Token 属性,而是继承自 ButtonSpinnerToken(继承自 LineEditToken),复用步进按钮和输入框的全部 Token。所有视觉属性均从全局 SharedToken 派生,不硬编码任何具体值。


Token 继承链

AbstractControlDesignToken
  └── LineEditToken (ID: "LineEdit")
        └── ButtonSpinnerToken (ID: "ButtonSpinner")
              └── NumericUpDownToken (ID: "NumericUpDown")

NumericUpDown 的视觉表现由三层 Token 共同决定:

  • LineEditToken:控制输入框字体大小
  • ButtonSpinnerToken:控制步进按钮的尺寸、颜色和背景
  • NumericUpDownToken:继承上述所有 Token,不增加额外定义

Token 资源访问方式

在 AXAML 中使用组件级 Token(通过 ButtonSpinner 的 Token 资源前缀访问):

{atom:ButtonSpinnerTokenResource HandleWidth}
{atom:ButtonSpinnerTokenResource HandleBg}
{atom:ButtonSpinnerTokenResource ControlWidth}

在 AXAML 中使用全局共享 Token:

{atom:SharedTokenResource ColorPrimary}
{atom:SharedTokenResource ControlHeight}
{atom:SharedTokenResource EnableMotion}

继承的 Token 一览

输入框字体 Token(来自 LineEditToken)

Token 名 类型 来源 说明
InputFontSize double SharedToken.FontSize 中号输入框字体大小
InputFontSizeLG double SharedToken.FontSizeLG 大号输入框字体大小
InputFontSizeSM double SharedToken.FontSizeSM 小号输入框字体大小

步进按钮 Token(来自 ButtonSpinnerToken)

Token 名 类型 来源 说明
ControlWidth double 固定值 90 输入框默认宽度
HandleWidth double SharedToken.ControlHeightSM 步进按钮区域宽度
HandleIconSize double SharedToken.FontSize / 2 步进按钮图标大小(上下箭头)
HandleBg Color SharedToken.ColorBgContainer 步进按钮背景色
HandleActiveBg Color SharedToken.ColorFillAlter 步进按钮激活(按下)背景色
HandleHoverColor Color SharedToken.ColorPrimary 步进按钮悬浮时图标颜色
HandleBorderColor Color SharedToken.ColorBorder 步进按钮边框颜色
FilledHandleBg Color 基于 SharedToken.ColorFillSecondary 混合 Filled 变体下步进按钮背景色

主题中使用的全局 SharedToken

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

Token 资源键 使用场景
EnableMotion 全局动画开关,控制 IsMotionEnabled 默认值
UniformlyPaddingXXS 清除按钮与右侧内容之间的间距(StackPanel.Spacing)
ColorTextPlaceholder 占位文本的默认前景色
ControlHeight / ControlHeightSM / ControlHeightLG 三种尺寸的控件高度
BorderRadius / BorderRadiusSM / BorderRadiusLG 三种尺寸的圆角半径
BorderThickness 输入框默认边框厚度
ColorPrimary / ColorPrimaryHover / ColorPrimaryActive 聚焦/悬浮时的边框和步进按钮颜色
ColorError / ColorErrorBorderHover Error 状态的边框颜色
ColorWarning / ColorWarningBorderHover Warning 状态的边框颜色
ColorBgContainer / ColorBgContainerDisabled 容器背景色(正常/禁用)
ColorTextDisabled 禁用态文本颜色
ColorBorder 默认边框颜色

Token 对外观的具体影响

样式变体与 Token 映射

样式变体 正常态 悬浮态 聚焦态 禁用态
Outline ColorBorder 边框 + ColorBgContainer 背景 ColorPrimaryHover 边框 ColorPrimary 边框 ColorBgContainerDisabled 背景
Filled 无边框 + ColorFillAlter 背景 ColorFillSecondary 背景 ColorPrimary 边框 ColorBgContainerDisabled 背景
Borderless 无边框 + 透明背景 透明背景 ColorPrimary 底部边框 透明背景

验证状态与 Token 映射

验证状态 边框颜色 悬浮边框
Default ColorBorder ColorPrimaryHover
Error ColorError ColorErrorBorderHover
Warning ColorWarning ColorWarningBorderHover

尺寸与 Token 映射

尺寸 高度 字号 圆角 步进按钮宽度
Large ControlHeightLG InputFontSizeLG BorderRadiusLG HandleWidth
Middle ControlHeight InputFontSize BorderRadius HandleWidth
Small ControlHeightSM InputFontSizeSM BorderRadiusSM HandleWidth

步进按钮交互状态

状态 背景色 图标颜色
正常 HandleBg 默认文本色
悬浮 HandleBg HandleHoverColor(主色)
按下 HandleActiveBg HandleHoverColor
禁用(到达边界) HandleBg ColorTextDisabled

自定义 Token

由于 NumericUpDownToken 继承自 ButtonSpinnerToken,自定义 NumericUpDown 的视觉表现需要同时考虑 ButtonSpinner 级别的 Token。如果需要全局修改所有数字输入框的步进按钮样式,修改 ButtonSpinnerToken 即可同时影响 NumericUpDown 和 ButtonSpinner。