Files

97 lines
3.2 KiB
Markdown
Raw Permalink 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.
# Drawer API 参考
## 命名空间
```csharp
namespace AtomUI.Desktop.Controls;
```
AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`)
---
## 枚举类型
### DrawerPlacement
抽屉滑入方向。
| 值 | 说明 |
|---|---|
| `Left` | 从左侧滑入 |
| `Top` | 从顶部滑入 |
| `Right` | 从右侧滑入(默认) |
| `Bottom` | 从底部滑入 |
### CustomizableSizeType(来自 `AtomUI.Controls`)
可自定义的尺寸类型枚举。
| 值 | 说明 |
|---|---|
| `Small` | 小号(默认,378px) |
| `Middle` | 中号(520px) |
| `Large` | 大号(736px) |
| `Custom` | 自定义(使用 `DialogSize` 指定) |
---
## 公共属性(StyledProperty)
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `Content` | `object?` | `null` | 抽屉内容(支持任意控件),标记 `[Content]` 可在 AXAML 中直接作为子元素 |
| `ContentTemplate` | `IDataTemplate?` | `null` | 内容数据模板 |
| `IsOpen` | `bool` | `false` | 抽屉是否打开。默认绑定模式为 `TwoWay`,可直接与 ViewModel 属性双向绑定 |
| `Placement` | `DrawerPlacement` | `Right` | 抽屉滑入方向 |
| `OpenOn` | `Control?` | `null`(自动绑定到 `TopLevel`) | 指定渲染范围的目标控件。子抽屉自动继承父抽屉的 `OpenOn`;若无父抽屉则自动绑定到 `TopLevel` |
| `IsShowMask` | `bool` | `true` | 是否显示半透明遮罩层 |
| `IsShowCloseButton` | `bool` | `true` | 是否显示关闭按钮 |
| `CloseWhenClickOnMask` | `bool` | `true` | 点击遮罩层是否关闭抽屉 |
| `Title` | `string` | — | 抽屉标题 |
| `Footer` | `object?` | `null` | 底部区域内容(标记 `[DependsOn(FooterTemplate)]`) |
| `FooterTemplate` | `IDataTemplate?` | `null` | 底部区域数据模板 |
| `Extra` | `object?` | `null` | 标题栏右侧额外操作区域(标记 `[DependsOn(ExtraTemplate)]`) |
| `ExtraTemplate` | `IDataTemplate?` | `null` | 额外操作区域数据模板 |
| `SizeType` | `CustomizableSizeType` | `Small` | 预设尺寸(共享属性,通过 `AddOwner` 注册,默认值被覆盖为 `Small`) |
| `DialogSize` | `Dimension` | 由 Token 控制 | 自定义尺寸(像素或百分比)。当 `SizeType` 为 `Small`/`Middle`/`Large` 时由 Token 自动设置;`Custom` 时由用户指定 |
| `PushOffsetPercent` | `double` | 由 Token 控制(0.4) | 多级抽屉 Push 偏移比率 |
| `IsMotionEnabled` | `bool` | 跟随全局 Token | 是否启用滑入/滑出动画(共享属性)。子抽屉自动继承父抽屉的 `IsMotionEnabled` |
---
## 事件
| 事件名 | 类型 | 说明 |
|---|---|---|
| `Opened` | `EventHandler?` | 抽屉打开后触发 |
| `Closed` | `EventHandler?` | 抽屉关闭后触发 |
---
## 静态方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| `Drawer.GetDrawer(Visual)` | `Drawer?` | 从可视树中查找指定元素所属的 Drawer 实例 |
---
## 实现的接口
### IMotionAwareControl
```csharp
public bool IsMotionEnabled { get; set; }
```
控制滑入/滑出动画。
### ICustomizableSizeTypeAware
```csharp
public CustomizableSizeType SizeType { get; set; }
```
支持 Small / Middle / Large / Custom 四种尺寸模式。