Files
AtomUI/docs/Desktop.Controls/QRCode/QRCodeAPI.md
T

116 lines
4.0 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.
# QRCode API 参考
## 命名空间
```csharp
// 桌面端具体实现
namespace AtomUI.Desktop.Controls;
// 设备无关基类
namespace AtomUI.Controls.Commons;
// 枚举类型
namespace AtomUI.Controls;
```
AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`)
---
## 枚举类型
### QRCodeEccLevel
二维码纠错等级枚举,定义于 `AtomUI.Controls` 命名空间。
| 值 | 数值 | 说明 |
|---|---|---|
| `L` | `0` | 最低容错(~7%),二维码最紧凑 |
| `M` | `1` | 默认等级(~15%),平衡容错与紧凑度 |
| `Q` | `2` | 较高容错(~25%),适合放置小图标 |
| `H` | `3` | 最高容错(~30%),适合放置较大图标 |
### QRCodeStatus
二维码状态枚举,定义于 `AtomUI.Controls` 命名空间。
| 值 | 数值 | 说明 |
|---|---|---|
| `Active` | `0` | 正常状态(默认),二维码正常显示 |
| `Expired` | `1` | 已过期,显示遮罩 + 过期文案 + 刷新按钮 |
| `Loading` | `2` | 加载中,显示遮罩 + 旋转加载指示器 |
| `Scanned` | `3` | 已扫描,显示遮罩 + 已扫描文案 |
---
## 公共属性(StyledProperty)
以下属性定义在 `AbstractQRCode` 基类中,`QRCode` 完全继承。
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `Value` | `string` | `""` | 二维码编码的文本或 URL 内容 |
| `IsBordered` | `bool` | `true` | 是否显示外边框和内间距 |
| `Color` | `IBrush?` | 由主题 Token 控制 | 二维码前景色(像素颜色) |
| `EccLevel` | `QRCodeEccLevel` | `QRCodeEccLevel.M` | 纠错等级(L/M/Q/H) |
| `Size` | `int` | `160` | 二维码像素尺寸(宽高相同) |
| `IconSize` | `int` | `40` | 中心图标区域大小(像素) |
| `Icon` | `IImage?` | `null` | 中心图标图像源,支持 `avares://` 协议 |
| `IconBgColor` | `IBrush?` | 由主题 Token 控制 | 中心图标背景色 |
| `Status` | `QRCodeStatus` | `QRCodeStatus.Active` | 二维码状态 |
| `LoadingContent` | `object?` | `null` | 加载状态自定义内容,为 `null` 时使用默认 Spin |
| `LoadingContentTemplate` | `IDataTemplate?` | `null` | 加载状态内容数据模板 |
| `ExpiredContent` | `object?` | `null` | 过期状态自定义内容,为 `null` 时使用默认文案+刷新按钮 |
| `ExpiredContentTemplate` | `IDataTemplate?` | `null` | 过期状态内容数据模板 |
| `ScannedContent` | `object?` | `null` | 已扫描状态自定义内容,为 `null` 时使用默认文案 |
| `ScannedContentTemplate` | `IDataTemplate?` | `null` | 已扫描状态内容数据模板 |
### 继承自 TemplatedControl 的常用属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `Background` | `IBrush?` | `Transparent`(由主题控制) | 二维码背景色(对应 Ant Design 的 `bgColor`) |
| `Foreground` | `IBrush?` | 由 Token 控制 | 前景色(用于状态文案) |
| `BorderBrush` | `IBrush?` | `Transparent`(`IsBordered=True` 时为 `ColorSplit`) | 边框颜色 |
| `BorderThickness` | `Thickness` | 由 `SharedToken.BorderThickness` 控制 | 边框粗细 |
| `CornerRadius` | `CornerRadius` | 由 `SharedToken.BorderRadiusLG` 控制 | 圆角半径 |
| `Padding` | `Thickness` | `IsBordered=True` 时为 `SharedToken.PaddingSM` | 内间距 |
---
## 事件
| 事件名 | 类型 | 说明 |
|---|---|---|
| `RefreshRequested` | `EventHandler?` | 用户点击过期状态下的刷新按钮时触发,用于重新生成二维码 |
---
## 模板部件
| 部件名 | 类型 | 说明 |
|---|---|---|
| `PART_RefreshButton` | `Button` | 过期状态下的刷新按钮,使用 `[TemplatePart]` 特性声明 |
---
## 类继承关系
```csharp
// 基类(AtomUI.Controls)
[TemplatePart("PART_RefreshButton", typeof(Button))]
public class AbstractQRCode : TemplatedControl
{
// 全部属性、事件和生成逻辑
}
// 桌面端实现(AtomUI.Desktop.Controls)
public class QRCode : AbstractQRCode
{
public QRCode()
{
this.RegisterTokenResourceScope(QRCodeToken.ScopeProvider);
}
}
```