Files
Shrlalgo.RvKits/Melskin/Controls/Toast/Toast.cs
2026-02-12 21:29:00 +08:00

33 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Runtime.CompilerServices;
namespace Melskin.Controls;
/// <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)));
}
}