# Slider 使用文档
本文档介绍 AtomUI Slider 控件的各种使用方式和常见场景。
> 📖 Gallery 源码位置:`controlgallery/AtomUIGallery/ShowCases/Views/DataEntry/SliderShowCase.axaml`
---
## 前置准备
### AXAML 命名空间
```xml
xmlns:atom="https://atomui.net"
```
### C# 命名空间
```csharp
using AtomUI.Desktop.Controls;
```
---
## 1. 基本用法
最简单的滑动条,通过拖拽选择一个值:
```xml
```
通过 `IsEnabled` 控制启用/禁用状态:
```xml
```
配合 `ToggleSwitch` 动态切换启用状态(参考 Gallery `Basic` 示例):
```xml
Enabled:
```
---
## 2. 范围选择(双滑块)
通过 `IsRangeMode="True"` 启用双滑块模式,使用 `RangeValue` 设置范围。拖拽时自动判断离哪个滑块更近:
```xml
```
在 C# 中设置范围值:
```csharp
slider.RangeValue = new SliderRangeValue { StartValue = 20, EndValue = 80 };
```
**约束**:`StartValue` 必须 ≤ `EndValue`,否则解析时抛出 `FormatException`。
---
## 3. 自定义 Tooltip
通过 `ValueFormatTemplate` 自定义 Tooltip 显示格式,使用 `string.Format` 语法:
```xml
```
> ⚠️ 注意:AXAML 中的 `{` 和 `}` 需要用 `\{` 和 `\}` 转义,避免被识别为标记扩展。
常用格式示例:
| 格式模板 | 效果 | 适用场景 |
|---|---|---|
| `\{0\}%` | `50%` | 百分比 |
| `\{0:F1\}°C` | `26.0°C` | 温度 |
| `$\{0:N0\}` | `$1,000` | 金额 |
| `\{0:0\}` | `50`(默认) | 整数 |
---
## 4. 垂直方向
通过 `Orientation="Vertical"` 切换为垂直滑动条。垂直模式下需要为容器设置固定高度:
```xml
```
---
## 5. 刻度标记(Marks)
通过 `Marks` 属性添加刻度标注。刻度标记在轨道上显示为小圆点,标签文字渲染在刻度下方(水平)或右侧(垂直)。点击标记可直接跳转到对应值:
```csharp
slider.Marks = new List
{
new("0°C", 0),
new("26°C", 26),
new("37°C", 37),
new("100°C", 100) { LabelBrush = Brushes.Red, LabelFontWeight = FontWeight.Bold }
};
```
每个 `SliderMark` 支持自定义样式:
| 属性 | 说明 |
|---|---|
| `Label` | 标注文字 |
| `Value` | 对应值 |
| `LabelBrush` | 文字颜色(可选) |
| `LabelFontStyle` | 字体样式(可选) |
| `LabelFontWeight` | 字体粗细(可选) |
在 Gallery 中,`Slider4`~`Slider7` 演示了带刻度标记的滑动条(通过 code-behind 设置 Marks)。
---
## 6. 刻度吸附
设置 `TickFrequency` 和 `IsSnapToTickEnabled` 使滑块只能停留在刻度位置:
```xml
```
键盘操作时也遵循刻度吸附规则。
---
## 7. 不包含模式
设置 `Included="False"` 时,轨道不高亮已覆盖部分,只显示刻度标记和滑块位置:
```xml
```
---
## 8. 方向反转
设置 `IsDirectionReversed="True"` 反转滑动方向:
```xml
```
- 水平模式:值从右到左递增
- 垂直模式:值从上到下递增
---
## 9. 禁用动画
通过 `IsMotionEnabled="False"` 禁用滑块的过渡动画:
```xml
```
---
## 常见组合模式
### 表单中的滑动条
Slider 实现了 `IFormItemAware` 接口,可直接嵌入 `FormItem`:
```xml
```
范围模式下表单值类型为 `SliderRangeValue`:
```xml
```
### 与数值输入联动
```xml
```
### 数据绑定
```xml
```
范围模式数据绑定:
```xml
```
---
## 键盘操作速查
| 按键 | 说明 |
|---|---|
| `←` / `↓` | 减少 `SmallChange` |
| `→` / `↑` | 增加 `SmallChange` |
| `PageUp` | 增加 `LargeChange` |
| `PageDown` | 减少 `LargeChange` |
| `Home` | 跳转到 `Minimum` |
| `End` | 跳转到 `Maximum` |
> 当 `IsDirectionReversed="True"` 时,方向键的增减方向会反转。