# Carousel 自定义样式指南
Carousel 的视觉表现通过 `ControlTheme` + Design Token 系统控制。以下介绍几种常见的自定义方式。
---
## 1. 使用属性直接控制
最简单的方式是通过 Carousel 的公共属性来控制行为和外观:
```xml
1
2
3
4
Slide 1
Slide 2
1
2
1
2
1
2
1
2
```
> 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/DataDisplay/CarouselShowCase.axaml`
---
## 2. 通过 Style 覆盖样式
可以在 AXAML 中使用 `Style` 对 Carousel 及其子控件进行统一样式定制:
### 统一背景和文字
```xml
```
### 自定义导航箭头样式
```xml
```
### 自定义指示点颜色
```xml
```
### 按分页位置定制
```xml
```
---
## 3. 通过 ControlTheme 完全替换主题
如果需要彻底替换 Carousel 的模板,可以定义自定义 `ControlTheme`:
```xml
```
> ⚠️ 注意:完全替换 ControlTheme 将丢失内置的分页指示器、导航按钮、进度动画等功能。建议优先使用 Style 覆盖。
---
## 4. 控制动画行为
```xml
1
2
1
2
```
---
## 样式选择器速查
> 说明:Avalonia 样式选择器中使用 `atom|Carousel` 语法引用 `atom` XML 命名空间下的类型。
### 按属性选择
| 选择器 | 说明 |
|---|---|
| `atom\|Carousel` | 匹配所有 Carousel 实例 |
| `atom\|Carousel[IsAutoPlay=True]` | 匹配自动播放的走马灯 |
| `atom\|Carousel[IsShowNavButtons=True]` | 匹配显示导航箭头的走马灯 |
| `atom\|Carousel[TransitionEffect=Fade]` | 匹配淡入淡出效果的走马灯 |
### 按分页位置选择
| 选择器 | 说明 |
|---|---|
| `atom\|Carousel[PaginationPosition=Top]` | 分页在顶部 |
| `atom\|Carousel[PaginationPosition=Bottom]` | 分页在底部(默认) |
| `atom\|Carousel[PaginationPosition=Left]` | 分页在左侧 |
| `atom\|Carousel[PaginationPosition=Right]` | 分页在右侧 |
### 按伪类选择
| 选择器 | 说明 |
|---|---|
| `atom\|Carousel:pointerover` | 鼠标悬浮 |
| `atom\|Carousel:disabled` | 禁用状态 |
### 子控件选择器
| 选择器 | 说明 |
|---|---|
| `atom\|CarouselPage` | 匹配所有页面容器 |
| `atom\|CarouselNavButton` | 匹配所有导航箭头按钮 |
| `atom\|CarouselNavButton:pointerover` | 悬浮态导航按钮(不透明度 1.0) |
| `atom\|CarouselPageIndicator` | 匹配所有分页指示点 |
| `atom\|CarouselPageIndicator[IsSelected=True]` | 选中态指示点(宽度扩展) |
| `atom\|CarouselPageIndicator:pointerover` | 悬浮态指示点(不透明度 0.75) |
### 模板内部部件选择器
| 选择器 | 说明 |
|---|---|
| `atom\|Carousel /template/ atom\|CarouselNavButton#PART_PreviousButton` | 前一页按钮 |
| `atom\|Carousel /template/ atom\|CarouselNavButton#PART_NextButton` | 下一页按钮 |
| `atom\|Carousel /template/ LayoutTransformControl#PaginationLayoutTransform` | 分页指示器布局容器 |
| `atom\|CarouselPageIndicator /template/ Border#PART_Frame` | 指示点主框架 |
| `atom\|CarouselPageIndicator /template/ Border#Progress` | 指示点进度条 |