33 lines
1.7 KiB
C#
33 lines
1.7 KiB
C#
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)));
|
||
}
|
||
}
|