DirectSurface UIDirectSurface UI
开始使用
文档/核心概念

主题与状态

主题和状态决定组件在不同交互场景下的视觉表现。DirectSurface UI 通过主题数据和组件 token 保持整体视觉一致。

更具体的业务页面视觉与交互规则见 组件设计系统。其中 Design Tokens 标准颜色使用模式组件状态标准组件交互模式用于统一业务页面的主题、密度和反馈行为。

ThemeData

ThemeData 描述颜色、字体、边框、焦点和组件状态等基础信息。组件绘制时应从当前主题读取颜色和尺寸,不应硬编码大量局部样式。

常见主题内容:

  • 背景色。
  • 文本色。
  • 强调色。
  • 边框色。
  • 焦点框。
  • hover / selected / disabled 状态色。
  • 字体族和字号。

组件状态

常见状态包括:

  • normal。
  • hovered。
  • pressed。
  • focused。
  • selected。
  • disabled。
  • readonly。
  • loading。
  • error / warning / success。

组件应清晰区分这些状态,尤其是 hover、selected、focused 和 disabled,避免用户无法判断当前控件是否可操作。

组件公开状态的业务契约见 组件基础状态契约。其中 visible 用于是否参与渲染树,disabled 用于整体不可交互,readonly 用于值可看但不可改。

状态颜色原则

  • hover 颜色必须和背景有足够对比度。
  • selected 状态必须比 hover 更明确。
  • disabled 状态应弱化,但仍可读。
  • placeholder 颜色必须明显弱于真实值。
  • 深色背景下 hover 应更亮,浅色背景下 hover 应更深。

统一交互行为

通用状态行为应沉到组件层,而不是每个页面重复处理。

例如:

  • TreeView 文本省略时 tooltip 展示完整文本。
  • Dropdown 候选项 hover 颜色和分割线风格统一。
  • GridView、TreeView、ScrollViewer 滚动条风格一致。
  • IconButton hover 时显示 tooltip。

自定义样式边界

页面可以组合组件,但不应该复制组件内部状态绘制逻辑。若多个页面都需要相同行为,应提取到组件或主题 token。

业务个性化可以通过:

  • 组件参数。
  • theme token。
  • row / cell style resolver。
  • 命令状态。

性能原则

主题变化会影响大量组件绘制。切换主题时可以触发整树刷新,但普通 hover、focus、selected 不应重算整页布局。