mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-21 16:36:27 +08:00
138 lines
5.3 KiB
Markdown
138 lines
5.3 KiB
Markdown
# ScrollViewer API 参考
|
||
|
||
## 命名空间
|
||
|
||
```csharp
|
||
namespace AtomUI.Desktop.Controls; // ScrollViewer, ScrollBar, ScrollBarThumb
|
||
namespace AtomUI.Controls.Commons; // AbstractScrollViewer, AbstractScrollBar, AbstractScrollBarThumb
|
||
```
|
||
|
||
AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`)
|
||
|
||
---
|
||
|
||
## ScrollViewer
|
||
|
||
### 公共属性(StyledProperty / AttachedProperty)
|
||
|
||
| 属性名 | 类型 | 默认值 | 属性类别 | 说明 |
|
||
|---|---|---|---|---|
|
||
| `IsLiteMode` | `bool` | `false` | `AttachedProperty` | 极简模式:滑块初始为细线,悬浮时膨胀,内容覆盖滚动条区域 |
|
||
| `IsMotionEnabled` | `bool` | 跟随全局 Token `EnableMotion` | `StyledProperty`(继承自 `AbstractScrollViewer`) | 是否启用过渡动画(滚动条显隐、分隔符透明度等) |
|
||
|
||
### 继承自 Avalonia.Controls.ScrollViewer 的常用属性
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `Content` | `object?` | `null` | 滚动内容(单个子控件) |
|
||
| `HorizontalScrollBarVisibility` | `ScrollBarVisibility` | `Disabled` | 水平滚动条可见性策略 |
|
||
| `VerticalScrollBarVisibility` | `ScrollBarVisibility` | `Auto` | 垂直滚动条可见性策略 |
|
||
| `AllowAutoHide` | `bool` | `true` | 是否允许滚动条在无交互时自动隐藏 |
|
||
| `IsScrollInertiaEnabled` | `bool` | `true` | 是否启用滚动惯性效果 |
|
||
| `IsDeferredScrollingEnabled` | `bool` | `false` | 延迟滚动模式(拖拽滑块时不实时更新内容位置) |
|
||
| `Offset` | `Vector` | `(0, 0)` | 当前滚动偏移量(可读写) |
|
||
| `Extent` | `Size` | — | 内容总尺寸(只读) |
|
||
| `Viewport` | `Size` | — | 可视区域尺寸(只读) |
|
||
| `IsExpanded` | `bool` | — | 滚动条是否展开(鼠标悬浮/拖拽时为 `true`) |
|
||
| `BringIntoViewOnFocusChange` | `bool` | `true` | 焦点变化时是否自动滚动到焦点元素 |
|
||
| `Background` | `IBrush?` | `Transparent` | 背景色 |
|
||
| `Padding` | `Thickness` | — | 内容区域内间距 |
|
||
| `HorizontalSnapPointsType` | `SnapPointsType` | — | 水平 SnapPoints 类型 |
|
||
| `VerticalSnapPointsType` | `SnapPointsType` | — | 垂直 SnapPoints 类型 |
|
||
| `HorizontalSnapPointsAlignment` | `SnapPointsAlignment` | — | 水平 SnapPoints 对齐方式 |
|
||
| `VerticalSnapPointsAlignment` | `SnapPointsAlignment` | — | 垂直 SnapPoints 对齐方式 |
|
||
|
||
### 附加属性静态方法
|
||
|
||
```csharp
|
||
// 获取控件的极简模式设置
|
||
public static bool GetIsLiteMode(Control control);
|
||
|
||
// 设置控件的极简模式
|
||
public static void SetIsLiteMode(Control control, bool value);
|
||
```
|
||
|
||
### ScrollBarVisibility 枚举
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Disabled` | 禁用该方向的滚动(不显示滚动条,内容不可滚动) |
|
||
| `Auto` | 按需显示(内容超出时显示,未超出时隐藏) |
|
||
| `Visible` | 始终显示滚动条 |
|
||
| `Hidden` | 隐藏滚动条但内容仍可滚动(通过触控/滚轮) |
|
||
|
||
---
|
||
|
||
## ScrollBar
|
||
|
||
### 公共属性(StyledProperty)
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `IsLiteMode` | `bool` | `false` | 极简模式(通过 `ScrollViewer.IsLiteModeProperty.AddOwner` 注册) |
|
||
| `IsMotionEnabled` | `bool` | 跟随全局 Token `EnableMotion` | 是否启用过渡动画 |
|
||
|
||
### 继承自 Avalonia.Controls.Primitives.ScrollBar 的常用属性
|
||
|
||
| 属性名 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `Orientation` | `Orientation` | 滚动条方向:`Horizontal` 或 `Vertical` |
|
||
| `Value` | `double` | 当前滑块位置值 |
|
||
| `Minimum` | `double` | 最小值 |
|
||
| `Maximum` | `double` | 最大值 |
|
||
| `ViewportSize` | `double` | 视口大小(决定滑块相对于轨道的长度比例) |
|
||
| `AllowAutoHide` | `bool` | 是否允许自动隐藏 |
|
||
|
||
---
|
||
|
||
## ScrollBarThumb
|
||
|
||
### 公共属性(StyledProperty)
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `IsLiteMode` | `bool` | `false` | 极简模式(通过 `ScrollViewer.IsLiteModeProperty.AddOwner` 注册) |
|
||
| `Orientation` | `Orientation` | — | 滑块方向(继承自 `AbstractScrollBarThumb`) |
|
||
| `IsMotionEnabled` | `bool` | 跟随全局 Token | 是否启用过渡动画(背景色、宽度/高度过渡) |
|
||
|
||
### 继承自 Avalonia.Controls.Primitives.Thumb 的常用属性
|
||
|
||
| 属性名 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `Background` | `IBrush?` | 滑块背景色(由 Token 控制) |
|
||
| `CornerRadius` | `CornerRadius` | 滑块圆角(由 Token 控制) |
|
||
| `Width` | `double` | 垂直滑块的宽度(由 Token 和 LiteMode 状态控制) |
|
||
| `Height` | `double` | 水平滑块的高度(由 Token 和 LiteMode 状态控制) |
|
||
|
||
---
|
||
|
||
## 伪类(Pseudo-Classes)
|
||
|
||
### ScrollBar 伪类
|
||
|
||
| 伪类 | 常量 | 触发条件 |
|
||
|---|---|---|
|
||
| `:vertical` | `StdPseudoClass.Vertical` | `Orientation == Vertical` |
|
||
| `:horizontal` | `StdPseudoClass.Horizontal` | `Orientation == Horizontal` |
|
||
|
||
### ScrollBarThumb 伪类
|
||
|
||
| 伪类 | 触发条件 |
|
||
|---|---|
|
||
| `:pointerover` | 鼠标悬浮在滑块上 |
|
||
| `:pressed` | 滑块被按下(拖拽中) |
|
||
|
||
---
|
||
|
||
## 实现的接口
|
||
|
||
### IMotionAwareControl
|
||
|
||
所有三个控件(`ScrollViewer`、`ScrollBar`、`ScrollBarThumb`)均实现此接口:
|
||
|
||
```csharp
|
||
public bool IsMotionEnabled { get; set; }
|
||
```
|
||
|
||
用于全局控制过渡动画的开启/关闭。当 `IsMotionEnabled = false` 时,所有过渡动画被移除,属性变化立即生效。
|