# ScrollViewer 使用文档
本文档介绍 AtomUI ScrollViewer 控件的各种使用方式,示例代码摘自 Gallery 演示程序及实际使用场景。
> 📖 ScrollViewer 作为基础设施控件,在 Gallery 中没有独立的 ShowCase 页面,但在多个组件的 ShowCase 中被广泛使用。以下示例均来自实际项目中的用法。
---
## 前置准备
在 AXAML 中使用 ScrollViewer,需要引入以下命名空间:
```xml
xmlns:atom="https://atomui.net"
```
在 C# 代码中引入:
```csharp
using AtomUI.Desktop.Controls; // ScrollViewer, ScrollBar, ScrollBarThumb
using AtomUI.Controls.Commons; // AbstractScrollViewer 等基类(如需继承)
```
---
## 1. 基本用法
最基本的 ScrollViewer 用法——包裹超出可视区域的内容,自动显示垂直滚动条:
```xml
```
---
## 2. 标准模式 vs 极简模式
### 标准模式(默认)
滚动条始终可见,占据独立空间,不覆盖内容区域:
```xml
```
### 极简模式
滚动条默认隐藏,鼠标进入时淡入显示,滑块初始为细线,悬浮时膨胀:
```xml
```
---
## 3. 使用附加属性
`IsLiteMode` 是附加属性,可以设置在任何内部使用 ScrollViewer 的控件上:
```xml
```
> 📖 参考:`controlgallery/AtomUIGallery/Workspace/Views/CaseNavigation.axaml`
---
## 4. 水平 + 垂直滚动
同时启用两个方向的滚动条:
```xml
```
---
## 5. 在容器模板中使用
ScrollViewer 常用在 ControlTheme 模板中作为内容滚动容器。以下示例摘自 Gallery 的 ShowCasePanel 模板:
```xml
```
> 📖 参考:`controlgallery/AtomUIGallery/Controls/ShowCasePanelTheme.axaml`
---
## 6. 与 FloatButton 配合使用
ScrollViewer 为浮动按钮提供滚动容器,FloatButton 会锚定在 ScrollViewer 内容区域的固定位置:
```xml
```
> 📖 参考:`controlgallery/AtomUIGallery/ShowCases/Views/General/FloatButtonShowCase.axaml`
---
## 7. 滚动条可见性控制
通过 `ScrollBarVisibility` 枚举精确控制滚动条的显示行为:
```xml
```
---
## 8. 控制动画行为
```xml
```
---
## 9. 程序化滚动控制
通过 C# 代码控制 ScrollViewer 的滚动位置:
```csharp
// 获取 ScrollViewer 实例(例如通过 Name 引用)
var scrollViewer = this.FindControl("MyScrollViewer");
// 滚动到指定偏移量
scrollViewer.Offset = new Vector(0, 100); // 水平偏移 0,垂直偏移 100
// 滚动到顶部
scrollViewer.Offset = new Vector(scrollViewer.Offset.X, 0);
// 滚动到底部
scrollViewer.Offset = new Vector(
scrollViewer.Offset.X,
scrollViewer.Extent.Height - scrollViewer.Viewport.Height);
```
```xml
```
---
## 常见组合模式
### 侧边栏导航
```xml
```
### 长表单
```xml
```
### 可滚动内容面板(常驻滚动条)
```xml
```
### 图片/画布查看器(双向滚动)
```xml
```