# Notification 自定义样式指南
Notification 系统的视觉表现通过 `ControlTheme` + Design Token 系统控制。以下介绍几种常见的自定义方式。
---
## 1. 使用属性直接控制
### 设置弹出位置
```csharp
var manager = new WindowNotificationManager(topLevel)
{
Position = NotificationPosition.TopLeft, // 左上角弹出
MaxItems = 3 // 最多同时显示 3 条
};
```
### 设置通知类型
```csharp
manager.Show(new Notification(
title: "操作成功",
content: "数据已保存",
type: NotificationType.Success
));
```
### 设置自定义图标
```csharp
manager.Show(new Notification(
title: "设置提醒",
content: "请检查系统配置",
icon: new SettingOutlined()
));
```
### 设置永不自动关闭
```csharp
manager.Show(new Notification(
title: "重要通知",
content: "此通知需要手动关闭",
expiration: TimeSpan.Zero
));
```
### 显示倒计时进度条
```csharp
manager.Show(new Notification(
title: "通知标题",
content: "带有进度条的通知",
showProgress: true
));
```
### 控制悬停暂停行为
```csharp
var manager = new WindowNotificationManager(topLevel)
{
IsPauseOnHover = false // 鼠标悬停时不暂停自动关闭
};
```
> 📖 完整示例参考:`controlgallery/AtomUIGallery/ShowCases/Views/Feedback/NotificationShowCase.axaml`
---
## 2. 通过 Style 覆盖 NotificationCard 样式
### 全局自定义通知卡片宽度
```xml
```
### 按通知类型定制图标颜色
```xml
```
### 自定义关闭按钮样式
```xml
```
### 自定义标题文本样式
```xml
```
---
## 3. 通过 Style 覆盖 WindowNotificationManager 样式
### 自定义容器对齐方式
```xml
```
---
## 4. 通过样式类(Style Classes)定制
`Show()` 方法支持传入样式类名数组,可为特定通知应用自定义样式:
```csharp
// 添加自定义样式类
manager.Show(new Notification("标题", "内容"), classes: new[] { "important" });
```
```xml
```
---
## 5. 控制动画行为
```csharp
// 禁用出入动画
var manager = new WindowNotificationManager(topLevel)
{
IsMotionEnabled = false
};
```
---
## 样式选择器速查
> 说明:Avalonia 样式选择器中使用 `atom|NotificationCard` 语法引用 `atom` XML 命名空间下的 `NotificationCard` 类型,其中 `|` 是命名空间分隔符。
### 按控件类型选择
| 选择器 | 说明 |
|---|---|
| `atom\|NotificationCard` | 匹配所有通知卡片 |
| `atom\|WindowNotificationManager` | 匹配通知管理器容器 |
### 按通知类型选择
| 选择器 | 说明 |
|---|---|
| `atom\|NotificationCard[NotificationType=Information]` | 匹配信息类通知 |
| `atom\|NotificationCard[NotificationType=Success]` | 匹配成功类通知 |
| `atom\|NotificationCard[NotificationType=Warning]` | 匹配警告类通知 |
| `atom\|NotificationCard[NotificationType=Error]` | 匹配错误类通知 |
### 按位置选择
| 选择器 | 说明 |
|---|---|
| `atom\|NotificationCard[Position=TopLeft]` | 匹配左上角位置的通知卡片 |
| `atom\|NotificationCard[Position=TopRight]` | 匹配右上角位置的通知卡片 |
| `atom\|NotificationCard[Position=TopCenter]` | 匹配顶部居中位置的通知卡片 |
| `atom\|NotificationCard[Position=BottomLeft]` | 匹配左下角位置的通知卡片 |
| `atom\|NotificationCard[Position=BottomRight]` | 匹配右下角位置的通知卡片 |
| `atom\|NotificationCard[Position=BottomCenter]` | 匹配底部居中位置的通知卡片 |
### 按状态选择
| 选择器 | 说明 |
|---|---|
| `atom\|NotificationCard[IsClosed=True]` | 匹配已关闭的通知卡片(动画完成后) |
| `atom\|NotificationCard[IsShowProgress=True]` | 匹配显示进度条的通知卡片 |
### 访问模板部件
| 选择器 | 说明 |
|---|---|
| `atom\|NotificationCard /template/ Border#Frame` | 通知卡片的主框架 Border |
| `atom\|NotificationCard /template/ atom\|IconPresenter#IconPresenter` | 类型图标展示器 |
| `atom\|NotificationCard /template/ DockPanel#HeaderContainer` | 标题栏容器 |
| `atom\|NotificationCard /template/ atom\|SelectableTextBlock#HeaderTitle` | 标题文本 |
| `atom\|NotificationCard /template/ atom\|IconButton#PART_CloseButton` | 关闭按钮 |
| `atom\|NotificationCard /template/ ContentPresenter#Content` | 正文内容展示器 |
| `atom\|NotificationCard /template/ atom\|NotificationProgressBar#ProgressBar` | 进度条 |
### 组合选择器示例
| 选择器 | 说明 |
|---|---|
| `atom\|NotificationCard[NotificationType=Error] /template/ Border#Frame` | 错误类型通知的主框架(可自定义边框颜色) |
| `atom\|NotificationCard[Position=TopLeft] /template/ Border#Frame` | 左上角通知的主框架(可自定义边距) |
| `atom\|NotificationCard.important` | 带有 `important` 样式类的通知卡片 |