Files
AtomUI/docs/Desktop.Controls/SplitView/SplitViewAPI.md
T

139 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SplitView API 参考
## 命名空间
```csharp
namespace AtomUI.Desktop.Controls;
```
AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`)
---
## 枚举类型
### SplitViewDisplayMode(来自 `Avalonia.Controls`)
显示模式枚举,控制面板与主内容的空间关系。
| 值 | 说明 |
|---|---|
| `Overlay` | 面板覆盖在主内容之上,收起时完全隐藏 |
| `Inline` | 面板与主内容并排,展开时压缩主内容 |
| `CompactInline` | 收起时保留紧凑条,展开时压缩主内容 |
| `CompactOverlay` | 收起时保留紧凑条,展开时覆盖主内容 |
### SplitViewPanePlacement(来自 `Avalonia.Controls`)
面板放置位置枚举。
| 值 | 说明 |
|---|---|
| `Left` | 面板在左侧(默认) |
| `Right` | 面板在右侧 |
| `Top` | 面板在顶部 |
| `Bottom` | 面板在底部 |
---
## AtomUI 扩展的公共属性(StyledProperty)
以下属性由 `AtomUI.Desktop.Controls.SplitView` 新增,不存在于 Avalonia 原生 SplitView 中。
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `PaneMotionEasing` | `Easing?` | 由 Token 控制(`cubic-bezier(0.1, 0.9, 0.2, 1.0)`) | 面板展开/收起的缓动曲线 |
| `PaneOpenMotionDuration` | `TimeSpan` | 由 Token 控制(200ms) | 面板展开动画时长 |
| `PaneCloseMotionDuration` | `TimeSpan` | 由 Token 控制(100ms) | 面板收起动画时长 |
| `IsMotionEnabled` | `bool` | 跟随全局 Token | 是否启用过渡动画(共享属性,通过 `AddOwner` 从 `MotionAwareControlProperty` 注册) |
---
## 继承自 Avalonia.Controls.SplitView 的常用属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `Content` | `object?` | `null` | 主内容区域,可以是任意控件 |
| `ContentTemplate` | `IDataTemplate?` | `null` | 主内容数据模板 |
| `Pane` | `object?` | `null` | 侧边栏面板内容 |
| `PaneTemplate` | `IDataTemplate?` | `null` | 面板内容数据模板 |
| `IsPaneOpen` | `bool` | `false` | 面板是否展开 |
| `DisplayMode` | `SplitViewDisplayMode` | `Overlay` | 显示模式 |
| `PanePlacement` | `SplitViewPanePlacement` | `Left` | 面板放置位置 |
| `OpenPaneLength` | `double` | 由 Token 控制(320) | 面板完全展开时的宽度/高度 |
| `CompactPaneLength` | `double` | 由 Token 控制(48) | 紧凑模式下面板的宽度/高度 |
| `PaneBackground` | `IBrush?` | 由 Token 控制(`ColorBgContainer`) | 面板背景画刷 |
| `UseLightDismissOverlayMode` | `bool` | `false` | 是否在 Overlay 模式下启用点击遮罩关闭面板 |
| `Background` | `IBrush?` | `null` | 整体背景色 |
| `IsEnabled` | `bool` | `true` | 是否启用 |
---
## 内部属性(Internal)
以下属性仅供控件内部和主题系统使用,不对外公开。
| 属性名 | 类型 | 说明 |
|---|---|---|
| `PaneOpenTransitions` | `Transitions?` | 面板展开时的过渡动画集合,由 `ConfigureTransitions` 自动管理 |
| `PaneCloseTransitions` | `Transitions?` | 面板收起时的过渡动画集合,由 `ConfigureTransitions` 自动管理 |
---
## 事件
| 事件名 | 类型 | 说明 |
|---|---|---|
| `PaneClosing` | `EventHandler<CancelRoutedEventArgs>` | 面板即将关闭时触发,可通过 `Cancel = true` 取消关闭(继承自 `Avalonia.Controls.SplitView`) |
| `PaneClosed` | `EventHandler<RoutedEventArgs>` | 面板关闭完成后触发(继承自 `Avalonia.Controls.SplitView`) |
---
## 伪类(Pseudo-Classes)
SplitView 支持以下伪类,可在样式选择器中使用。所有伪类均继承自 Avalonia 原生 SplitView。
### 面板状态伪类
| 伪类 | 触发条件 |
|---|---|
| `:open` | `IsPaneOpen == true` |
| `:closed` | `IsPaneOpen == false` |
### 面板位置伪类
| 伪类 | 触发条件 |
|---|---|
| `:left` | `PanePlacement == Left` |
| `:right` | `PanePlacement == Right` |
| `:top` | `PanePlacement == Top` |
| `:bottom` | `PanePlacement == Bottom` |
### 显示模式伪类
| 伪类 | 触发条件 |
|---|---|
| `:overlay` | `DisplayMode == Overlay` |
| `:inline` | `DisplayMode == Inline` |
| `:compactinline` | `DisplayMode == CompactInline` |
| `:compactoverlay` | `DisplayMode == CompactOverlay` |
### 其他伪类
| 伪类 | 触发条件 |
|---|---|
| `:lightDismiss` | `UseLightDismissOverlayMode == true` |
| `:disabled` | `IsEnabled == false` |
---
## 实现的接口
### IMotionAwareControl
```csharp
public bool IsMotionEnabled { get; set; }
```
控制面板展开/收起时是否使用过渡动画。设为 `false` 时面板将瞬间切换尺寸,不产生动画效果。