mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-19 23:30:44 +08:00
164 lines
6.2 KiB
Markdown
164 lines
6.2 KiB
Markdown
# MessageBox API 参考
|
||
|
||
## 命名空间
|
||
|
||
```csharp
|
||
namespace AtomUI.Desktop.Controls;
|
||
```
|
||
|
||
AXAML 命名空间前缀:`atom`(`xmlns:atom="https://atomui.net"`)
|
||
|
||
---
|
||
|
||
## 枚举类型
|
||
|
||
### MessageBoxStyle
|
||
|
||
消息弹框样式枚举,控制图标和默认按钮组合。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Normal` | 无图标,仅 OK 按钮 |
|
||
| `Confirm` | 黄色 `ExclamationCircleFilled` 图标,OK + Cancel 按钮 |
|
||
| `Information` | 蓝色 `InfoCircleFilled` 图标,仅 OK 按钮 |
|
||
| `Success` | 绿色 `CheckCircleFilled` 图标,仅 OK 按钮 |
|
||
| `Warning` | 黄色 `ExclamationCircleFilled` 图标,仅 OK 按钮 |
|
||
| `Error` | 红色 `CloseCircleFilled` 图标,仅 OK 按钮 |
|
||
|
||
### MessageBoxOkButtonStyle
|
||
|
||
确认按钮样式枚举。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Default` | 默认样式按钮(白色背景 + 边框) |
|
||
| `Primary` | 主按钮样式(蓝色实心背景) |
|
||
|
||
### DialogHostType(来自 `AtomUI.Desktop.Controls`)
|
||
|
||
弹窗宿主类型枚举。
|
||
|
||
| 值 | 说明 |
|
||
|---|---|
|
||
| `Window` | 独立原生窗口 |
|
||
| `Overlay` | 页面内浮层覆盖(默认) |
|
||
|
||
---
|
||
|
||
## MessageBox 类
|
||
|
||
### 公共属性(StyledProperty)
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `Title` | `string?` | `null` | 弹框标题 |
|
||
| `Icon` | `PathIcon?` | `null` | 自定义图标(为 null 时根据 Style 自动设置) |
|
||
| `Content` | `object?` | `null` | 弹框正文内容([Content] 标记,支持任意控件) |
|
||
| `ContentTemplate` | `IDataTemplate?` | `null` | 内容模板 |
|
||
| `Style` | `MessageBoxStyle` | `MessageBoxStyle.Information` | 消息样式,控制图标和按钮组合 |
|
||
| `OkButtonStyle` | `MessageBoxOkButtonStyle` | `MessageBoxOkButtonStyle.Primary` | 确认按钮样式 |
|
||
| `OkButtonText` | `string?` | `null` | 自定义确认按钮文本 |
|
||
| `CancelButtonText` | `string?` | `null` | 自定义取消按钮文本 |
|
||
| `HostType` | `DialogHostType` | `DialogHostType.Overlay` | 宿主模式 |
|
||
| `IsOpen` | `bool` | `false` | 弹框是否打开(支持双向绑定) |
|
||
| `IsModal` | `bool` | `false` | 是否为模态弹框 |
|
||
| `IsLoading` | `bool` | `false` | 整体加载状态 |
|
||
| `IsConfirmLoading` | `bool` | `false` | 确认按钮加载状态 |
|
||
| `IsLightDismissEnabled` | `bool` | `false` | 是否允许点击遮罩关闭(仅 Overlay 模式) |
|
||
| `IsDragMovable` | `bool` | `false` | 是否允许拖拽标题栏移动 |
|
||
| `IsCenterOnStartup` | `bool` | `true` | 是否初始居中显示 |
|
||
| `HorizontalOffset` | `Dimension?` | `null` | 水平偏移量 |
|
||
| `VerticalOffset` | `Dimension?` | `null` | 垂直偏移量 |
|
||
| `PlacementTarget` | `Control?` | `null` | 放置目标控件([ResolveByName] 标记) |
|
||
| `Result` | `object?` | `null` | 弹框操作结果(支持双向绑定) |
|
||
| `IsMotionEnabled` | `bool` | 跟随全局 Token `EnableMotion` | 是否启用动画(共享属性) |
|
||
|
||
### CLR 属性
|
||
|
||
| 属性名 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `ButtonsConfigure` | `Action<IReadOnlyList<DialogButton>>?` | 按钮配置回调,可自定义标准按钮的文本和行为 |
|
||
| `CustomButtons` | `AvaloniaList<DialogButton>` | 自定义按钮集合 |
|
||
|
||
### 公共方法
|
||
|
||
| 方法 | 签名 | 说明 |
|
||
|---|---|---|
|
||
| `Open` | `object? Open()` | 同步打开弹框,返回操作结果 |
|
||
| `OpenAsync` | `Task OpenAsync()` | 异步打开弹框 |
|
||
| `Cancel` | `void Cancel()` | 触发取消操作(调用内部 Dialog.Reject) |
|
||
| `Confirm` | `void Confirm()` | 触发确认操作(调用内部 Dialog.Accept) |
|
||
|
||
### 静态方法
|
||
|
||
| 方法 | 签名 | 说明 |
|
||
|---|---|---|
|
||
| `ShowMessageBox` | `static object? ShowMessageBox<TView, TViewModel>(TViewModel?, MessageBoxOptions?, TopLevel?)` | 同步显示(泛型版) |
|
||
| `ShowMessageBox` | `static object? ShowMessageBox(Control, object?, MessageBoxOptions?, TopLevel?)` | 同步显示(自定义内容版) |
|
||
| `ShowMessageBoxAsync` | `static Task ShowMessageBoxAsync<TView, TViewModel>(TViewModel?, MessageBoxOptions?, Action<IMessageBoxActionResult>?, TopLevel?)` | 异步显示,通过回调获取结果 |
|
||
| `ShowMessageBoxModalAsync` | `static Task<object?> ShowMessageBoxModalAsync<TView, TViewModel>(TViewModel?, MessageBoxOptions?, TopLevel?)` | 异步模态显示,返回结果 |
|
||
| `ShowMessageAsync` | `static Task ShowMessageAsync(Control, object?, MessageBoxOptions?, Action<IMessageBoxActionResult>?, TopLevel?)` | 异步显示自定义内容 |
|
||
| `ShowMessageModalAsync` | `static Task<object?> ShowMessageModalAsync(Control, object?, MessageBoxOptions?, TopLevel?)` | 异步模态显示自定义内容 |
|
||
|
||
### 事件
|
||
|
||
| 事件名 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `Opened` | `EventHandler` | 弹框打开后触发 |
|
||
| `Closed` | `EventHandler` | 弹框关闭后触发 |
|
||
| `Cancelled` | `EventHandler` | 用户取消操作后触发 |
|
||
| `Confirmed` | `EventHandler` | 用户确认操作后触发 |
|
||
|
||
---
|
||
|
||
## MessageBoxOptions record
|
||
|
||
静态 API 使用的选项配置。
|
||
|
||
| 属性名 | 类型 | 默认值 | 说明 |
|
||
|---|---|---|---|
|
||
| `HostType` | `DialogHostType` | `DialogHostType.Overlay` | 宿主模式 |
|
||
| `Title` | `string?` | `null` | 弹框标题 |
|
||
| `Icon` | `PathIcon?` | `null` | 自定义图标 |
|
||
| `Style` | `MessageBoxStyle` | `MessageBoxStyle.Information` | 消息样式 |
|
||
| `IsDragMovable` | `bool` | `false` | 是否可拖拽 |
|
||
| `PlacementTarget` | `Control?` | `null` | 放置目标 |
|
||
| `HorizontalOffset` | `Dimension?` | `null` | 水平偏移 |
|
||
| `VerticalOffset` | `Dimension?` | `null` | 垂直偏移 |
|
||
| `IsCenterOnStartup` | `bool` | `true` | 是否居中 |
|
||
| `IsLightDismissEnabled` | `bool` | `false` | 是否轻量关闭 |
|
||
| `IsLoading` | `bool` | `false` | 加载状态 |
|
||
| `IsConfirmLoading` | `bool` | `false` | 确认按钮加载 |
|
||
| `Width` | `double` | `double.NaN` | 弹框宽度 |
|
||
| `Height` | `double` | `double.NaN` | 弹框高度 |
|
||
| `MinWidth` | `double` | `0` | 最小宽度 |
|
||
| `MinHeight` | `double` | `0` | 最小高度 |
|
||
| `MaxWidth` | `double` | `∞` | 最大宽度 |
|
||
| `MaxHeight` | `double` | `∞` | 最大高度 |
|
||
|
||
---
|
||
|
||
## IMessageBoxActionResult 接口
|
||
|
||
操作结果契约接口。
|
||
|
||
```csharp
|
||
public interface IMessageBoxActionResult
|
||
{
|
||
object? Result { get; }
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 常量
|
||
|
||
### MessageBoxThemeConstants(内部)
|
||
|
||
```csharp
|
||
internal static class MessageBoxThemeConstants
|
||
{
|
||
public const string DialogPart = "PART_Dialog";
|
||
}
|
||
```
|