WPF Alert弹框控件 - 完全使用指南

    • 概述
    • 快速开始
      • nuget
      • 安装与引用
      • 基本用法
    • 功能特性详细说明
      • AlertType 枚举
      • 方法参数详解
        • Show 方法(局部弹窗)
        • ShowGlobal 方法(全局弹窗)
    • 完整示例代码
      • XAML 布局
      • C# 代码实现
    • 界面演示
    • 功能特性对比表格
    • 自定义样式参数表格
    • 高级用法
      • 1. 长时间显示的提示
      • 2. 完全自定义样式
      • 3. 手动关闭的提示
    • 注意事项
    • 总结

概述

MessageBoxGuo 是一个功能强大的WPF弹框控件库,提供了现代化的Alert提示功能,支持局部和全局两种显示模式,以及多种消息类型和自定义选项。

快速开始

nuget

dotnet add package MessageBoxGuo --version 1.0.1
Install-Package MessageBoxGuo -Version 1.0.1

MessageBoxGuo

包地址:https://www.nuget.org/packages/MessageBoxGuo
git地址:https://gitee.com/gwhsss/auto-cad.-entity-tools

安装与引用

首先在项目中引用 MessageBoxGuo 命名空间:

using MessageBoxGuo;

基本用法

// 显示一个成功提示(局部)
AlertBox.Show("操作成功!", AlertType.Success, AlertContainer);// 显示一个错误提示(全局)
AlertBox.ShowGlobal("操作失败,请重试。", AlertType.Error);

功能特性详细说明

AlertType 枚举

类型说明默认颜色图标
Success成功提示#67C23A (绿色)
Error错误提示#F56C6C (红色)
Warning警告提示#E6A23C (橙色)
Info信息提示#909399 (灰色)

方法参数详解

Show 方法(局部弹窗)
AlertBox.Show(string message,           // 必需:要显示的消息内容AlertType type,           // 必需:消息类型Panel container,          // 必需:承载弹窗的容器(如Canvas)int duration = 3000,      // 可选:自动关闭时间(毫秒),默认3000Brush customBackground = null,  // 可选:自定义背景色Brush customForeground = null   // 可选:自定义前景色(文字和图标颜色)
);
ShowGlobal 方法(全局弹窗)
AlertBox.ShowGlobal(string message,           // 必需:要显示的消息内容AlertType type,           // 必需:消息类型int duration = 3000,      // 可选:自动关闭时间(毫秒),默认3000Brush customBackground = null,  // 可选:自定义背景色Brush customForeground = null   // 可选:自定义前景色(文字和图标颜色)
);

完整示例代码

XAML 布局

<Windowx:Class="MessageBoxGuoTests.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:MessageBoxGuoTests"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="WPF Alert弹框示例"Width="800"Height="600"mc:Ignorable="d"><Grid><!-- 按钮区域 --><StackPanelWidth="300"HorizontalAlignment="Center"VerticalAlignment="Center"><!-- 局部弹窗测试按钮 --><Button Content="成功提示(局部)" Click="SuccessButton_Click" Style="{StaticResource SuccessButtonStyle}"/><Button Content="错误提示(局部)" Click="ErrorButton_Click" Style="{StaticResource ErrorButtonStyle}"/><Button Content="警告提示(局部)" Click="WarningButton_Click" Style="{StaticResource WarningButtonStyle}"/><Button Content="信息提示(局部)" Click="InfoButton_Click" Style="{StaticResource InfoButtonStyle}"/><Button Content="自定义提示(局部)" Click="CustomButton_Click" Style="{StaticResource CustomButtonStyle}"/><Separator Height="20" Margin="10"/><!-- 全局弹窗测试按钮 --><Button Content="成功提示(全局)" Click="GlobalSuccessButton_Click" Style="{StaticResource SuccessButtonStyle}"/><Button Content="错误提示(全局)" Click="GlobalErrorButton_Click" Style="{StaticResource ErrorButtonStyle}"/><Button Content="警告提示(全局)" Click="GlobalWarningButton_Click" Style="{StaticResource WarningButtonStyle}"/><Button Content="信息提示(全局)" Click="GlobalInfoButton_Click" Style="{StaticResource InfoButtonStyle}"/><Button Content="自定义提示(全局)" Click="GlobalCustomButton_Click" Style="{StaticResource CustomButtonStyle}"/><Separator Height="20" Margin="10"/><!-- 批量测试按钮 --><Button Content="测试多个弹窗" Click="TestMultipleAlerts_Click" Style="{StaticResource TestButtonStyle}"/><Button Content="测试多个全局弹窗" Click="TestMultipleGlobalAlerts_Click" Style="{StaticResource TestButtonStyle}"/></StackPanel><!-- Alert弹框容器 --><Canvasx:Name="AlertContainer"Width="300"Height="0"Margin="20"HorizontalAlignment="Right"VerticalAlignment="Top"/></Grid>
</Window>

C# 代码实现

using MessageBoxGuo;
using System.Windows;
using System.Windows.Threading;namespace MessageBoxGuoTests
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}// 局部弹窗示例private void SuccessButton_Click(object sender, RoutedEventArgs e){AlertBox.Show("操作成功!", AlertType.Success, AlertContainer);}private void ErrorButton_Click(object sender, RoutedEventArgs e){AlertBox.Show("操作失败,请重试。", AlertType.Error, AlertContainer);}private void WarningButton_Click(object sender, RoutedEventArgs e){AlertBox.Show("警告:请注意操作权限。", AlertType.Warning, AlertContainer);}private void InfoButton_Click(object sender, RoutedEventArgs e){AlertBox.Show("提示:系统将于今晚进行维护。", AlertType.Info, AlertContainer);}private void CustomButton_Click(object sender, RoutedEventArgs e){AlertBox.Show("自定义消息:这是一个自定义样式的提示框。", AlertType.Info, AlertContainer, 5000, Brushes.Purple, Brushes.White);}// 全局弹窗示例private void GlobalSuccessButton_Click(object sender, RoutedEventArgs e){AlertBox.ShowGlobal("全局操作成功!", AlertType.Success);}private void GlobalErrorButton_Click(object sender, RoutedEventArgs e){AlertBox.ShowGlobal("全局操作失败,请重试。", AlertType.Error);}private void GlobalWarningButton_Click(object sender, RoutedEventArgs e){AlertBox.ShowGlobal("全局警告:请注意操作权限。", AlertType.Warning);}private void GlobalInfoButton_Click(object sender, RoutedEventArgs e){AlertBox.ShowGlobal("全局提示:系统将于今晚进行维护。", AlertType.Info);}private void GlobalCustomButton_Click(object sender, RoutedEventArgs e){AlertBox.ShowGlobal("全局自定义消息:这是一个自定义样式的提示框。", AlertType.Info, 5000, Brushes.Purple, Brushes.White);}// 批量测试private void TestMultipleAlerts_Click(object sender, RoutedEventArgs e){for (int i = 1; i <= 5; i++){int index = i;DispatcherTimer timer = new DispatcherTimer{Interval = TimeSpan.FromMilliseconds(index * 500)};timer.Tick += (s, args) =>{timer.Stop();AlertBox.Show($"测试消息 {index}", AlertType.Info, AlertContainer);};timer.Start();}}private void TestMultipleGlobalAlerts_Click(object sender, RoutedEventArgs e){for (int i = 1; i <= 5; i++){int index = i;DispatcherTimer timer = new DispatcherTimer{Interval = TimeSpan.FromMilliseconds(index * 500)};timer.Tick += (s, args) =>{timer.Stop();AlertBox.ShowGlobal($"全局测试消息 {index}", AlertType.Info);};timer.Start();}}}
}

界面演示

MessageBoxGuo

功能特性对比表格

特性Show (局部)ShowGlobal (全局)说明
显示位置指定容器内屏幕右上角局部在应用内,全局在整个系统
容器要求需要Panel容器无需容器全局自动创建容器
多显示器只显示在当前窗口支持多显示器全局弹窗在主显示器显示
生命周期随窗口关闭独立存在全局弹窗不依赖父窗口
使用场景应用内提示全局通知根据需求选择合适的方式

自定义样式参数表格

参数类型默认值说明
durationint3000ms自动关闭时间,0表示不自动关闭
customBackgroundBrushnull自定义背景颜色,覆盖默认样式
customForegroundBrushnull自定义文字和图标颜色
messagestring必需提示消息内容,支持多行文本
typeAlertType必需消息类型,决定默认样式和图标

高级用法

1. 长时间显示的提示

// 显示10秒的提示
AlertBox.Show("重要提示,请仔细阅读。", AlertType.Warning, AlertContainer, 10000);

2. 完全自定义样式

// 使用自定义颜色
AlertBox.Show("自定义样式提示", AlertType.Info, AlertContainer, 4000, Brushes.LightBlue, Brushes.DarkBlue);

3. 手动关闭的提示

// 设置为0表示不自动关闭,需要用户手动关闭
AlertBox.Show("请手动关闭此提示", AlertType.Info, AlertContainer, 0);

注意事项

  1. 线程安全: 所有弹窗操作都会自动切换到UI线程执行
  2. 性能优化: 弹窗使用淡入淡出动画,避免突兀显示
  3. 内存管理: 弹窗关闭后会自动清理资源
  4. Z-index: 全局弹窗始终置顶,不会被其他窗口遮挡

总结

MessageBoxGuo 提供了一个简单易用但功能强大的弹窗解决方案,支持多种消息类型、自定义样式和显示位置。无论是应用内提示还是全局通知,都能满足各种业务场景的需求。

通过合理的参数配置,您可以轻松创建出符合品牌风格的提示框,提升用户体验和应用的专业性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96619.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96619.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/96619.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可视化-模块1-HTML-01

1-软件下载&#xff1a; 软件名称&#xff1a;HBuilderX 官网地址&#xff1a; https://www.dcloud.io/hbuilderx.html 下载文佳-解压缩-打开exe文件 创建快捷方式至桌面 2-创建项目 【普通项目】-【基本HTML项目】-【项目名&#xff1a;week1-1】 【index】输入&#xff1…

机器翻译 (Machine Translation) 经典面试笔试50题(包括详细答案)

更多内容请见: 机器翻译修炼-专栏介绍和目录 文章目录 第一部分:基础理论与概念 (1-15题) 1. 题目: 什么是机器翻译(MT)?请简述其发展历程中的几个主要范式。 2. 题目: 机器翻译的主要评价指标有哪些?请详细解释BLEU指标的计算原理和优缺点。 3. 题目: 什么是平行语料…

linux中文本文件操作之grep命令

文章目录背景案例demo环境方式一、安装wsl方式二、安装grep一、查找指定字符串二、忽略大小写查找三、查找时显示行号四、统计匹配的次数五、精准匹配一个单词六、显示匹配上下文七、只显示匹配的内容八、按固定字符串匹配背景 在日常运维中会对日志文件&#xff0c;使用grep命…

链表漫游指南:C++ 指针操作的艺术与实践

文章目录0. 前言1. 链表的分类2. 单链表的实现2.1 链表的基本结构——节点&#xff08;Node&#xff09;2.2 核心操作详解2.2.1 构造和析构2.2.2 插入操作2.2.3 删除操作2.3.4 其他操作2.4 总结3. 双向链表的实现3.1 基本结构设计3.2 基本操作3.2.1 初始化与销毁3.2.2 插入与删…

Claude Code赋能企业级开发:外卖平台核心系统的智能化重构

开篇&#xff1a;万亿市场背后的技术挑战中国外卖市场日订单量超过1亿单&#xff0c;每一单背后都是一个复杂的技术链条&#xff1a;用户下单→商家接单→骑手抢单→实时配送→评价反馈。构建这样一个支撑千万级并发、涉及地理位置计算、实时调度、支付结算的超级平台&#xff…

【使用Unsloth 微调】数据集的种类

1. 什么是数据集 对于大型语言模型&#xff08;LLMs&#xff09;&#xff0c;数据集是用于训练模型的数据集合。为了训练有效&#xff0c;文本数据需要能够被分词&#xff08;tokenized&#xff09;。创建数据集的关键部分之一是聊天模板&#xff08;chat template&#xff09;…

【码蹄杯】2025年本科组省赛第一场

个人主页&#xff1a;Guiat 归属专栏&#xff1a;算法竞赛 文章目录1. MC0455 四大名著-西游签到2. MC0456 斩断灵藤3. MC0457 符咒封印4. MC0458 移铁术5. MC0459 昆仑墟6. MC0460 星空迷轨阵7. MC0461 排队8. MC0462 最后一难正文 总共8道题。 1. MC0455 四大名著-西…

CentOS 10安装Ollama

前置说明 linux服务器版本&#xff1a;CentOS10 ollama版本&#xff1a;v0.11.6 下载安装包 下载安装包 官网地址&#xff1a;Ollama 下载地址&#xff1a;Download Ollama 选择linux平台&#xff0c;由于使用官网提供的脚本直接安装容易失败&#xff0c;这里选择手动下…

手机、电脑屏幕的显示坏点检测和成像原理

如今&#xff0c;手机和电脑屏幕已成为人们日常生活和工作中不可或缺的一部分。无论是处理文档、观看视频&#xff0c;还是进行专业设计&#xff0c;屏幕的显示质量都直接影响着用户体验。本文将介绍屏幕显示的基本原理&#xff0c;包括RGB色素构成和成像机制&#xff0c;并进一…

文件与fd

文件与fd一、前置预备二、复习c语言文件三、系统文件认识3.1 系统层面有关文件的接口&#xff08;open&#xff09;&#xff1a;![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b15577967d1445b08cd5252f2009683a.png)3.2 简单使用open参数3.3 语言vs系统3.4 进一步理…

语义通信高斯信道仿真代码

1️⃣ 代码 def AWGN(coding, snr, devicecpu):"""为输入张量添加高斯白噪声&#xff08;AWGN&#xff09;&#xff0c;根据指定的 SNR&#xff08;分贝&#xff09;控制噪声强度。参数&#xff1a;coding (torch.Tensor): 输入张量&#xff0c;形状为 [batch_s…

unity中实现机械臂自主运动

目的&#xff1a;导入机械臂的fbx模型&#xff0c;利用C#编写脚本实现机械臂的自主运动步骤1.在 Unity 中&#xff0c;右键点击 “Assets” 文件夹&#xff0c;选择 “Create” -> “C# Script” 来创建一个新的 C# 脚本命名为 “ArmController”。2.双击打开脚本&#xff0…

Python 版本与 package 版本兼容性检查方法

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

深入剖析分布式事务的Java实现:从理论到Seata实战

文章目录深入剖析分布式事务的Java实现&#xff1a;从理论到Seata实战引言&#xff1a;分布式事务的现实挑战1. 分布式事务理论基础1.1 从ACID到CAP/BASE1.2 典型业务场景分析2. 主流分布式事务解决方案对比2.1 技术方案全景图2.2 选型建议3. Seata框架深度解析3.1 Seata架构设…

自建知识库,向量数据库 (十一)之 量化对比余弦——仙盟创梦IDE

向量比对&#xff1a;开启企业经营自动化搜索新视野在当今数字化时代&#xff0c;企业经营自动化已成为提升竞争力的关键。其中&#xff0c;搜索功能作为企业获取信息、连接用户与资源的重要入口&#xff0c;其效率和准确性直接影响企业的运营效率和用户体验。向量比对在企业经…

Spring Cloud系列—SkyWalking告警和飞书接入

上篇文章&#xff1a; Spring Cloud系列—SkyWalking链路追踪https://blog.csdn.net/sniper_fandc/article/details/149948321?fromshareblogdetail&sharetypeblogdetail&sharerId149948321&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目…

【问题】解决docker的方式安装n8n,找不到docker.n8n.io/n8nio/n8n:latest镜像的问题

问题概览 用docker方式安装n8n&#xff0c;遇到错误&#xff0c;安装不了的问题&#xff1a; Unable to find image docker.n8n.io/n8nio/n8n:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request can…

机器人控制基础:串级PID控制算法的参数如何整定?

目录 一、整定前的准备 二、内环(副环)参数整定(核心步骤) 1. 断开主环,单独测试内环 2. 内环参数整定(按 “比例→积分→微分” 顺序) (1)比例系数(kp)整定 (2)积分系数(ki)整定 (3)微分系数(kd)整定(可选) 3. 验证内环抗扰动能力 三、外环(主…

HTTP性能优化实战指南(含代码/图表/案例)

HTTP性能优化实战指南&#xff08;含代码/图表/案例&#xff09;一、性能优化关键指标TTFB&#xff08;Time To First Byte&#xff09;: 服务器响应时间FCP&#xff08;First Contentful Paint&#xff09;: 首内容渲染时间LCP&#xff08;Largest Contentful Paint&#xff0…

QT代码框架小案例:一个简单的时间类(Time)及其实例化程序,模拟了时间的设置、显示和自动流逝功能,类似一个简易电子时钟。

一、代码框架二、运行终端显示三、代码详细注释test.pro# 指定项目类型为应用程序&#xff08;而非库或其他类型&#xff09; TEMPLATE app# 配置项目&#xff1a;启用控制台输出&#xff0c;使用C11标准 CONFIG console c11# 移除配置&#xff1a;不生成应用程序捆绑包&…