Files
ShrlAlgoToolkit/NeoUI/Melskin/Controls/Toast/Toast.cs

33 lines
1.7 KiB
C#
Raw Normal View History

2025-08-24 13:49:55 +08:00
using System.Runtime.CompilerServices;
2026-01-02 17:30:30 +08:00
namespace VariaStudio.Controls;
2025-08-24 13:49:55 +08:00
/// <summary>
/// 提供静态方法来显示各种类型的轻量级通知,支持屏幕级别和窗口级别的消息提示。
/// 通过调用Screen属性可以获取一个IToastService实例用于在整个应用范围内显示通知。
/// 使用For方法为特定的窗口创建一个IToastService实例允许在该窗口上下文中显示通知。
/// </summary>
public static class Toast
{
/// <summary>
/// 获取一个IToastService实例该实例允许在整个应用程序范围内显示屏幕级别的通知。
/// 通过这个属性,可以调用相关的显示方法来发送不同类型的通知消息,如成功、信息、错误和警告等。
/// </summary>
public static IToastService Screen { get; }
private static readonly ConditionalWeakTable<Window, IToastService> WindowManagers = new();
static Toast() { Screen = new ToastManager(new ScreenHost()); }
/// <summary>
/// 为指定的窗口创建一个IToastService实例以便在该窗口上下文中显示轻量级通知。
/// </summary>
/// <param name="window">要为其创建通知服务的窗口对象。如果传递null则会抛出异常。</param>
/// <returns>与给定窗口关联的IToastService实例用于显示通知。</returns>
/// <exception cref="ArgumentNullException">当提供的window参数为null时抛出。</exception>
public static IToastService For(Window window)
{
if (window == null) throw new ArgumentNullException(nameof(window));
return WindowManagers.GetValue(window, w => new ToastManager(new WindowHost(w)));
}
}