# ColorPicker 自定义样式指南 ColorPicker 的视觉表现通过 `ControlTheme` + Design Token 系统控制。以下介绍几种常见的自定义方式。 --- ## 1. 使用属性直接控制 最简单的方式是通过 ColorPicker 的公共属性来控制外观: ```xml ``` > 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/ColorPickerShowCase.axaml` --- ## 2. 自定义颜色文本格式化 通过 `ColorTextFormatter` 附加属性,可以自定义触发器上显示的颜色文本: ```csharp // 在 C# 代码中设置自定义格式化 ColorPicker.SetColorTextFormatter(colorPicker, (color, format) => { var colorText = ColorToHexConverter.ToHexString(color, AlphaComponentPosition.Leading, false, true); return $"Custom Text ({colorText})"; }); ``` 对于 `GradientColorPicker`,自定义格式化函数接收渐变画刷和控件集合: ```csharp GradientColorPicker.SetPresetColor(gradientPicker, (brush, format, controls) => { // 自定义渐变色文本渲染逻辑 }); ``` > 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/ColorPickerShowCase.axaml.cs` --- ## 3. 通过 Style 覆盖样式 可以在 AXAML 中使用 `Style` 对 ColorPicker 进行全局或局部样式覆盖: ### 全局统一间距 ```xml ``` ### 按样式变体定制 ```xml ``` ### 按状态定制 ```xml ``` ### 按尺寸定制 ```xml ``` ### 使用伪类选择器 ```xml ``` --- ## 4. 通过 ControlTheme 完全重定义 如需完全重定义 ColorPicker 的视觉表现,可以创建新的 `ControlTheme`: ```xml ``` --- ## 5. GradientColorPicker 样式定制 `GradientColorPicker` 与 `ColorPicker` 共享相同的基类样式系统,所有适用于 `AbstractColorPicker` 的样式属性均可使用: ```xml ``` ### 渐变色选择器样式覆盖 ```xml ``` --- ## 6. 在表单中使用 ColorPicker 实现了 `IFormItemAware` 接口,可直接在 Form 中使用: ```xml ``` 当表单验证失败时,FormItem 会自动将 ColorPicker 的 `Status` 设置为 `Error`,边框变为红色。 --- ## 7. 在紧凑空间中使用 ColorPicker 实现了 `ICompactSpaceAware` 接口,可在 `Space.Compact` 中使用: ```xml ``` 在紧凑空间中,相邻的 ColorPicker 会自动调整圆角,形成视觉上的一体化组合。