# MessageBox 自定义样式指南
MessageBox 基于 AtomUI 的 Dialog 系统构建,支持声明式(AXAML)和命令式(静态 API)两种使用方式。由于 MessageBox 内部使用 `MessageBoxDialogHost`(Window 模式)或 `MessageBoxOverlayDialogHost`(Overlay 模式)渲染,自定义样式需针对对应的宿主控件进行。
---
## 1. 通过属性直接控制
最常用的方式是通过 MessageBox 的公共属性控制外观和行为:
```xml
确定要删除这些项目吗?
数据已保存。
这是一个原生窗口弹框。
```
> 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml`("MessageBox Style" 部分)
---
## 2. 通过静态 API 参数控制
使用静态方法时,通过 `MessageBoxOptions` 控制外观:
```csharp
var options = new MessageBoxOptions
{
Title = "Do you want to delete these items?",
Style = MessageBoxStyle.Confirm,
IsDragMovable = true,
IsCenterOnStartup = true,
HostType = DialogHostType.Overlay
};
await MessageBox.ShowMessageModalAsync(content, null, options);
```
> 📖 参考:`controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml.cs` 中 `HandleCreateConfirmMessageBox` 等方法
---
## 3. 通过 Style 覆盖宿主主题
MessageBox 的实际视觉渲染由内部的 `MessageBoxDialogHost`(Window 模式)或 `MessageBoxOverlayDialogHost`(Overlay 模式)控件完成。可以通过 Style 对这些内部控件进行样式覆盖:
### 自定义 Overlay 模式下的语义图标大小
```xml
```
### 按消息样式自定义图标颜色
```xml
```
---
## 4. 控制动画行为
```xml
此弹框无动画效果。
```
---
## 5. 控制按钮样式
```xml
确认按钮将使用默认样式。
```
---
## 样式选择器速查
> 说明:由于 MessageBox 的实际渲染由内部宿主控件完成,样式选择器需要针对 `MessageBoxDialogHost` 或 `MessageBoxOverlayDialogHost`。
### 按控件类型选择
| 选择器 | 说明 |
|---|---|
| `atom\|MessageBox` | 匹配 MessageBox 外层控件(通常无需直接样式化) |
| `atom\|MessageBoxDialogHost` | 匹配 Window 宿主模式下的弹窗渲染 |
| `atom\|MessageBoxOverlayDialogHost` | 匹配 Overlay 宿主模式下的弹窗渲染 |
### 按消息样式选择
| 选择器 | 说明 |
|---|---|
| `atom\|MessageBoxDialogHost[Style=Confirm]` | Window 模式确认样式 |
| `atom\|MessageBoxDialogHost[Style=Information]` | Window 模式信息样式 |
| `atom\|MessageBoxDialogHost[Style=Success]` | Window 模式成功样式 |
| `atom\|MessageBoxDialogHost[Style=Warning]` | Window 模式警告样式 |
| `atom\|MessageBoxDialogHost[Style=Error]` | Window 模式错误样式 |
| `atom\|MessageBoxOverlayDialogHost[Style=Confirm]` | Overlay 模式确认样式 |
| `atom\|MessageBoxOverlayDialogHost[Style=Information]` | Overlay 模式信息样式 |
| `atom\|MessageBoxOverlayDialogHost[Style=Success]` | Overlay 模式成功样式 |
| `atom\|MessageBoxOverlayDialogHost[Style=Warning]` | Overlay 模式警告样式 |
| `atom\|MessageBoxOverlayDialogHost[Style=Error]` | Overlay 模式错误样式 |
### 模板部件选择(宿主控件内部)
| 选择器 | 说明 |
|---|---|
| `atom\|MessageBoxDialogHost /template/ atom\|IconPresenter#StyleIconPresenter` | Window 模式下的语义图标 |
| `atom\|MessageBoxOverlayDialogHost /template/ atom\|IconPresenter#StyleIconPresenter` | Overlay 模式下的语义图标 |
| `atom\|MessageBoxDialogHost /template/ Border#ContentFrame` | Window 模式下的内容区框架 |
| `atom\|MessageBoxOverlayDialogHost /template/ Border#ContentFrame` | Overlay 模式下的内容区框架 |
| `atom\|MessageBoxDialogHost /template/ Border#FooterFrame` | Window 模式下的底部按钮区框架 |
| `atom\|MessageBoxOverlayDialogHost /template/ Border#FooterFrame` | Overlay 模式下的底部按钮区框架 |