上篇《踩坑实录》发出去后,看来不少兄弟都对 Avalonia 的弹窗机制感同身受。既然这大周末外面下着雨哪也去不了,我索性给自己开了一罐可乐,坐在机械键盘前,决定把 Avalonia 的弹窗家族给彻底扒个底朝天。
如果说 WindowNotificationManager 在默认状态下像个“渣女”——若即若离,撩完就跑,你还没看清她长啥样,她就消失得无影无踪,甚至有时候还同时出现好几个给你制造“修罗场”——那一定是因为我们没有给她立好规矩。
其实,只要你掌握了她的核心参数和“四大情绪”,她完全可以被你调教成程序里最温柔、最懂事的“贴心女管家”。
今天,咱们就从源码级别的枚举入手,彻底降伏她,并附上全系弹窗的硬核装配指南!
一、 降伏“渣女”:WindowNotificationManager 终极调教指南
要想让通知弹窗乖乖听话,我们首先得摸清她的“脾气”(属性)和“情绪”(枚举类型)。
1. 规矩立在明处:核心属性装配表
在 Loaded 事件中初始化时,你有这几个“紧箍咒”可以套:
| Position | NotificationPosition | TopRight | 她从哪个角落出现? TopLeft, TopRight, BottomLeft, BottomRight。强烈建议设在右下角,那是 Windows 用户最习惯的“绝对领域”。 |
| MaxItems | int | 5 | **允许她同时“作妖”的最大数量。**设为 3 最优雅。如果不设上限,当程序疯狂报错时,你的屏幕会被叠罗汉式的弹窗淹没,直接演变成灾难现场。 |
| Margin | Thickness | 0 | **保持社交距离。**千万别用默认的 0!建议设为 new Thickness(0, 30, 15, 0)。给她留点呼吸感,不要让她紧紧贴在屏幕边缘,看着都觉得窒息。 |
2. 拿捏她的情绪:NotificationType 源码级解析
在 Avalonia.Controls.Notifications 命名空间下,官方定义了这样一个枚举:
// 摘要:
// Enumeration of types for Avalonia.Controls.Notifications.INotification.
public enum NotificationType
{
Information,
Success,
Warning,

