# 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 会自动调整圆角,形成视觉上的一体化组合。