Slider API 参考
命名空间
AXAML 命名空间前缀:atom(xmlns:atom="https://atomui.net")
Slider 类
继承关系
实现的接口
| 接口 |
定义位置 |
作用 |
IMotionAwareControl |
AtomUI.Controls.Shared |
控制过渡动画开关(IsMotionEnabled) |
IFormItemAware |
AtomUI.Controls.Shared |
可参与表单验证;单值模式表单值为 double,范围模式为 SliderRangeValue |
Slider 公共属性(StyledProperty)
值属性
| 属性名 |
类型 |
默认值 |
说明 |
Value |
double |
0 |
当前值(单值模式),继承自 RangeBase |
Minimum |
double |
0 |
最小值,继承自 RangeBase |
Maximum |
double |
100 |
最大值,继承自 RangeBase |
SmallChange |
double |
1 |
小步进(方向键),继承自 RangeBase |
LargeChange |
double |
10 |
大步进(PageUp/PageDown),继承自 RangeBase |
RangeValue |
SliderRangeValue |
default |
范围值(范围模式),AXAML 中用逗号分隔的两个数字,通过 AddOwner 共享自 SliderTrack |
IsRangeMode |
bool |
false |
是否启用范围选择模式(双滑块),通过 AddOwner 共享自 SliderTrack |
布局属性
| 属性名 |
类型 |
默认值 |
说明 |
Orientation |
Orientation |
Horizontal |
滑动条方向,通过 AddOwner 共享自 StackPanel |
IsDirectionReversed |
bool |
false |
是否反转方向,通过 AddOwner 共享自 SliderTrack |
刻度属性
| 属性名 |
类型 |
默认值 |
说明 |
TickFrequency |
double |
0 |
刻度间隔;为 0 时无刻度效果 |
IsSnapToTickEnabled |
bool |
false |
是否吸附到最近刻度 |
Marks |
List<SliderMark>? |
null |
刻度标记列表,通过 AddOwner 共享自 SliderTrack |
Included |
bool |
true |
是否高亮轨道覆盖部分,通过 AddOwner 共享自 SliderTrack |
显示属性
| 属性名 |
类型 |
默认值 |
说明 |
ValueFormatTemplate |
string |
"{0:0}" |
Tooltip 值格式化模板(string.Format 语法) |
行为属性
| 属性名 |
类型 |
默认值 |
说明 |
IsMotionEnabled |
bool |
跟随全局 Token EnableMotion |
是否启用过渡动画,通过 AddOwner 共享自 MotionAwareControlProperty |
IsWaveSpiritEnabled |
bool |
跟随全局 Token |
是否启用聚焦波纹效果,通过 AddOwner 共享自 WaveSpiritAwareControlProperty |
SliderRangeValue 结构体
| 属性 |
类型 |
说明 |
StartValue |
double |
范围起始值 |
EndValue |
double |
范围结束值 |
在 AXAML 中可用逗号分隔的数字字符串赋值:
约束:StartValue ≤ EndValue,否则解析抛出 FormatException。
SliderMark 数据类
| 属性 |
类型 |
默认值 |
说明 |
Label |
string |
(构造参数) |
刻度标注文字 |
Value |
double |
(构造参数) |
刻度对应的值 |
LabelBrush |
IBrush? |
null |
标注颜色(可选,默认使用 Token 颜色) |
LabelFontStyle |
FontStyle |
Normal |
标注字体样式(可选) |
LabelFontWeight |
FontWeight |
Normal |
标注字体粗细(可选) |
SliderThumb 类
继承关系
公共事件(RoutedEvent)
| 事件名 |
事件参数类型 |
路由策略 |
说明 |
DragStarted |
VectorEventArgs |
Bubble |
开始拖拽时触发 |
DragDelta |
VectorEventArgs |
Bubble |
拖拽过程中持续触发 |
DragCompleted |
VectorEventArgs |
Bubble |
拖拽完成时触发 |
公共属性(StyledProperty)
| 属性名 |
类型 |
说明 |
OutlineBrushProperty |
IBrush? |
outline 环颜色(内部使用) |
OutlineThicknessProperty |
Thickness |
outline 环厚度(内部使用) |
ThumbCircleSizeProperty |
double |
滑块圆形尺寸(内部使用) |
渲染机制
SliderThumb 重写 Render() 方法进行自绘:
- 绘制底圆:白色背景 + 主色边框(
BorderBrush / BorderThickness)
- 绘制 outline 环:主色半透明环(
OutlineBrush / OutlineThickness)
动画过渡通过 Transitions 配置,包含 OutlineBrush、OutlineThickness、BorderBrush 三个属性的过渡。
SliderTrack 类
继承关系
公共属性(StyledProperty)
| 属性名 |
类型 |
默认值 |
说明 |
Minimum |
double |
0 |
最小值,通过 AddOwner 共享自 RangeBase |
Maximum |
double |
100 |
最大值,通过 AddOwner 共享自 RangeBase |
Value |
double |
0 |
当前值,通过 AddOwner 共享自 RangeBase |
RangeValue |
SliderRangeValue |
default |
范围值 |
IsRangeMode |
bool |
false |
范围模式开关 |
Orientation |
Orientation |
Horizontal |
方向 |
StartSliderThumb |
SliderThumb? |
null |
起始滑块 |
EndSliderThumb |
SliderThumb? |
null |
结束滑块 |
IsDirectionReversed |
bool |
false |
是否反转方向 |
IgnoreThumbDrag |
bool |
false |
是否忽略滑块拖拽(由 Slider 接管交互) |
DeferThumbDrag |
bool |
false |
是否延迟拖拽 |
Included |
bool |
true |
是否高亮轨道覆盖部分 |
TrackBarBrush |
IBrush? |
— |
已覆盖部分画刷 |
TrackGrooveBrush |
IBrush? |
— |
轨道底层画刷 |
Marks |
List<SliderMark>? |
null |
刻度标记列表 |
MarkLabelFontSize |
double |
— |
刻度标签字号 |
MarkLabelFontFamily |
FontFamily |
— |
刻度标签字体 |
MarkLabelBrush |
IBrush? |
— |
刻度标签颜色 |
职责
SliderTrack 是 Slider 的核心渲染控件,负责:
- 轨道底层(Rail)和已覆盖部分(Track Bar)的自绘
- 刻度标记圆点和标签文字的自绘
- 滑块(SliderThumb)的位置计算和布局
- 指针事件的处理和转发
伪类
Slider 伪类
| 伪类 |
来源 |
说明 |
:horizontal |
StdPseudoClass.Horizontal |
水平方向 |
:vertical |
StdPseudoClass.Vertical |
垂直方向 |
:pressed |
StdPseudoClass.Pressed(PressedMixin) |
正在拖拽中 |
:disabled |
Avalonia 内置 |
禁用态 |
:pointerover |
Avalonia 内置 |
鼠标悬浮 |
SliderThumb 伪类
| 伪类 |
来源 |
说明 |
:pressed |
StdPseudoClass.Pressed |
正在拖拽中 |
:pointerover |
Avalonia 内置 |
鼠标悬浮 |
:focus |
Avalonia 内置 |
获得焦点 |
SliderTrack 伪类
| 伪类 |
来源 |
说明 |
:horizontal |
StdPseudoClass.Horizontal |
水平方向 |
:vertical |
StdPseudoClass.Vertical |
垂直方向 |
:pointerover |
Avalonia 内置 |
鼠标悬浮 |
:disabled |
Avalonia 内置 |
禁用态 |
键盘操作
| 按键 |
说明 |
← / ↓ |
减少 SmallChange(方向反转时增加) |
→ / ↑ |
增加 SmallChange(方向反转时减少) |
PageUp |
增加 LargeChange(方向反转时减少) |
PageDown |
减少 LargeChange(方向反转时增加) |
Home |
跳转到 Minimum |
End |
跳转到 Maximum |
Enter |
切换 XY 导航焦点锁定(游戏手柄场景) |
Escape |
退出焦点锁定 |
表单集成(IFormItemAware)
Slider 实现了 IFormItemAware 接口,可嵌入 FormItem 参与表单验证:
| 方法 |
行为 |
GetFormValue() |
单值模式返回 double,范围模式返回 SliderRangeValue |
SetFormValue(object?) |
单值模式设置 Value,范围模式设置 RangeValue |
ClearFormValue() |
重置 RangeValue 为 default |
ValueChanged 事件 |
Value 或 RangeValue 变化时触发 |
数据验证
Slider 支持 Avalonia 数据验证机制:
当绑定的 Value 属性验证失败时,会通过 DataValidationErrors.SetError() 设置错误状态。
无障碍支持
AutomationControlType 默认为 Slider
- 通过
SliderAutomationPeer 提供自动化支持
SliderThumb 通过 SliderThumbAutomationPeer 提供自动化支持