XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.WinUIHelper

【DLL】WinUI的各种工具类,帮助开发者快速构建一个模块化的WinUI项目

公开
关注 0 Fork 0 Star 0
UTF-8
using Microsoft.UI.Dispatching;
using System.Collections.ObjectModel;

namespace XFEExtension.NetCore.WinUIHelper.Interface.Services;

/// <summary>
/// 全局消息显示服务
/// </summary>
public interface IMessageService : IGlobalService
{
    /// <summary>
    /// 消息堆栈
    /// </summary>
    ReadOnlyDictionary<string, InfoBar> MessageStack { get; }
    /// <summary>
    /// 显示一条消息
    /// </summary>
    /// <param name="message">消息文本</param>
    /// <param name="title">消息标题(可选)</param>
    /// <returns>是否显示成功</returns>
    bool ShowMessage(string message, string title = "");
    /// <summary>
    /// 显示一条消息
    /// </summary>
    /// <param name="message">消息文本</param>
    /// <param name="title">消息标题</param>
    /// <param name="severity">消息的提示等级</param>
    /// <returns>是否显示成功</returns>
    bool ShowMessage(string message, string title, InfoBarSeverity severity);
    /// <summary>
    /// 显示一条带按钮的消息
    /// </summary>
    /// <param name="message">消息文本</param>
    /// <param name="title">消息标题</param>
    /// <param name="buttonText">按钮文本</param>
    /// <param name="callBackAction">按钮回调方法</param>
    /// <param name="severity">提示等级</param>
    /// <param name="canClose">是否可以被关闭</param>
    /// <returns>是否显示成功</returns>
    bool ShowButtonMessage(string message, string title, string buttonText, Action<object, RoutedEventArgs> callBackAction, InfoBarSeverity severity = InfoBarSeverity.Informational, bool canClose = true);
    /// <summary>
    /// 显示一条消息
    /// </summary>
    /// <param name="message">消息文本</param>
    /// <param name="title">消息标题</param>
    /// <param name="content">消息自定义内容</param>
    /// <param name="severity">消息的提示等级</param>
    /// <param name="time">消息持续时间</param>
    /// <param name="canClose">是否可被关闭</param>
    /// <param name="buttonText">按钮文本</param>
    /// <param name="callBackAction">按钮回调方法</param>
    /// <param name="messageId">消息的ID</param>
    /// <returns>是否显示成功</returns>
    bool ShowMessage(string message, string title = "", object? content = null, InfoBarSeverity severity = InfoBarSeverity.Informational, double time = 5, bool canClose = true, string buttonText = "", Action<object, RoutedEventArgs>? callBackAction = null, string messageId = "");
    /// <summary>
    /// 显示一条消息,使用指定ID
    /// </summary>
    /// <param name="messageId">消息ID</param>
    /// <param name="message">消息文本</param>
    /// <param name="title">消息标题</param>
    /// <param name="severity">消息的提示等级</param>
    /// <param name="time">消息的持续时间</param>
    /// <returns>是否显示成功</returns>
    bool ShowMessageWithId(string messageId, string message, string title = "", InfoBarSeverity severity = InfoBarSeverity.Informational, double time = 5);
    /// <summary>
    /// 显示一条消息,使用自定义InfoBar控件
    /// </summary>
    /// <param name="infoBar">自定义InfoBar控件</param>
    /// <param name="time">消息的持续时间</param>
    /// <param name="messageId">消息ID</param>
    /// <returns>是否显示成功</returns>
    bool ShowMessage(InfoBar infoBar, double time = -1, string messageId = "");
    /// <summary>
    /// 根据消息ID获取一条消息
    /// </summary>
    /// <param name="messageId">消息ID</param>
    /// <returns>InfoBar控件</returns>
    InfoBar? GetMessage(string messageId);
    /// <summary>
    /// 移除一条消息
    /// </summary>
    /// <param name="messageId">消息ID</param>
    /// <returns>是否移除成功</returns>
    bool RemoveMessage(string messageId);
    /// <summary>
    /// 清除所有消息列表
    /// </summary>
    void Clear();
    /// <summary>
    /// 初始化消息显示服务
    /// </summary>
    /// <param name="stackPanel">需要显示的消息的StackPanel控件</param>
    /// <param name="dispatcherQueue">目标DispatcherQueue</param>
    void Initialize(StackPanel stackPanel, DispatcherQueue dispatcherQueue);
}