using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging.Messages; using QYMessageCenter.Client.Models; namespace QYMessageCenter.Client { public class PopupManager { private List MessageList { get; set; } private PopupWindow pw; public PopupManager() { MessageList = new List(); WeakReferenceMessenger.Default.Register(this, (o, x) => ShowNext()); } public void Show(Message msg) { MessageList.Insert(0, msg); Show(); } private void Show() { var msg = MessageList[0]; if (pw != null) { pw.RefreshMsg(msg); } else { pw = new PopupWindow(msg); pw.Closed += Pw_Closed; pw.Show(); } } private void Pw_Closed(object? sender, EventArgs e) { pw = null; MessageList.Clear(); } public void ShowNext() { if (MessageList.Count() > 0) MessageList.RemoveAt(0); if (MessageList.Count() == 0) pw.Close(); else Show(); } } public class MVVMMessage_ShowNext : ValueChangedMessage { public MVVMMessage_ShowNext(object value) : base(value) { } } }