# SplitView Design Token SplitView 控件使用 `SplitViewToken`(Token ID: `"SplitView"`)作为组件级 Design Token。SplitView 的 Token 较为精简,主要控制面板尺寸和动画参数。 --- ## Token 资源访问方式 在 AXAML 中使用组件级 Token: ```xml {atom:SplitViewTokenResource OpenPaneThemeLength} {atom:SplitViewTokenResource CompactPaneThemeLength} {atom:SplitViewTokenResource PaneOpenMotionDuration} {atom:SplitViewTokenResource PaneCloseMotionDuration} {atom:SplitViewTokenResource PaneMotionEasing} ``` 在 AXAML 中使用全局共享 Token: ```xml {atom:SharedTokenResource ColorBgContainer} {atom:SharedTokenResource ColorBorder} {atom:SharedTokenResource ColorBgMask} ``` --- ## 组件级 Token 一览 以下是 `SplitViewToken` 定义的全部组件级 Token。 ### 尺寸 Token | Token 名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `OpenPaneThemeLength` | `double` | `320` | 面板完全展开时的默认宽度/高度(像素),通过 ControlTheme 绑定到 `OpenPaneLength` 属性 | | `CompactPaneThemeLength` | `double` | `48` | 紧凑模式下面板的默认宽度/高度(像素),通过 ControlTheme 绑定到 `CompactPaneLength` 属性 | ### 动画 Token | Token 名 | 类型 | 默认值 | 说明 | |---|---|---|---| | `PaneOpenMotionDuration` | `TimeSpan` | `200ms` | 面板展开动画时长 | | `PaneCloseMotionDuration` | `TimeSpan` | `100ms` | 面板收起动画时长(比展开快,提供「快速响应关闭」的体验) | | `PaneMotionEasing` | `Easing?` | `cubic-bezier(0.1, 0.9, 0.2, 1.0)` | 缓动曲线,控制动画的加速/减速节奏 | --- ## 主题中使用的全局 SharedToken 除组件级 Token 外,SplitView 的 ControlTheme 还直接引用了以下全局 `SharedToken`: | Token 资源键 | 使用场景 | |---|---| | `ColorBgContainer` | 面板默认背景色(`PaneBackground` 属性的默认值) | | `ColorBorder` | 面板分隔线颜色(`HCPaneBorder` 的 `Fill`) | | `ColorBgMask` | 轻量关闭遮罩层颜色(`LightDismissLayer` 在 `:lightDismiss` 伪类激活时的 `Fill`) | --- ## Token 对外观的具体影响 ### 尺寸 Token 映射 | Token | 映射属性 | 影响 | |---|---|---| | `OpenPaneThemeLength` | `OpenPaneLength` | 控制面板展开后的最终宽度(水平面板)或高度(垂直面板) | | `CompactPaneThemeLength` | `CompactPaneLength` | 控制 CompactInline / CompactOverlay 模式下面板收起时保留的紧凑宽度/高度 | ### 动画 Token 映射 | Token | 映射属性 | 影响 | |---|---|---| | `PaneOpenMotionDuration` | `PaneOpenMotionDuration` | 展开动画的持续时长。值越大,展开越慢 | | `PaneCloseMotionDuration` | `PaneCloseMotionDuration` | 收起动画的持续时长。默认比展开快,提供敏捷的关闭体验 | | `PaneMotionEasing` | `PaneMotionEasing` | 缓动曲线。默认曲线 `(0.1, 0.9, 0.2, 1.0)` 实现「快启动、缓停止」效果 | ### 颜色 Token 映射 | SharedToken | 目标元素 | 影响 | |---|---|---| | `ColorBgContainer` | `Panel#PART_PaneRoot` 背景 | 面板背景色,跟随主题自动切换(亮色/暗色模式) | | `ColorBorder` | `Rectangle#HCPaneBorder` 填充 | 面板边缘的 1px 分隔线颜色 | | `ColorBgMask` | `Rectangle#LightDismissLayer` 填充 | Overlay 模式展开时的半透明遮罩色 | ### 动画行为说明 SplitView 的动画系统通过以下链路工作: ``` SplitViewToken (Token 定义) ↓ ControlTheme Setter 绑定 SplitView 属性 (PaneOpenMotionDuration, PaneCloseMotionDuration, PaneMotionEasing) ↓ ConfigureTransitions() 方法 PaneOpenTransitions / PaneCloseTransitions (内部 Transitions 集合) ↓ 伪类选择器绑定到 PART_PaneRoot 面板尺寸过渡动画 (Width 或 Height 的 DoubleTransition) ``` 当 `IsMotionEnabled = false` 时,`PaneOpenTransitions` 和 `PaneCloseTransitions` 被设为 `null`,面板尺寸变化将不使用任何过渡动画。