当前位置: 首页 > article >正文

WPF中自定义消息弹窗

WPF 自定义消息弹窗开发笔记

一、XAML 布局设计

文件:MessageInfo.xaml

<Window x:Class="AutoFeed.UserControls.MessageInfo"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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:AutoFeed.UserControls"mc:Ignorable="d"Icon="/Source/bitbug_favicon.ico"          <!-- 窗口图标 -->Title="Message" Height="200" Width="350"    <!-- 标题、尺寸 -->WindowStartupLocation="CenterScreen">       <!-- 窗口居中 --><Grid Background="#FF333333">                  <!-- 背景色(深灰色) --><Grid.RowDefinitions><RowDefinition Height="*"/>             <!-- 内容区域自动扩展 --><RowDefinition Height="60"/>            <!-- 按钮区域固定高度 --></Grid.RowDefinitions><!-- 消息显示区域 --><Grid Grid.Row="0"><TextBox Margin="20"                         <!-- 内边距 -->Name="msg"                          <!-- 控件名称 -->TextWrapping="Wrap"                 <!-- 文本自动换行 -->FontSize="16"                       <!-- 字体大小 -->Foreground="White"                  <!-- 字体颜色 -->Background="Transparent"            <!-- 透明背景 -->BorderThickness="0"/>               <!-- 无边框 --></Grid><!-- 按钮区域 --><StackPanel Grid.Row="1" HorizontalAlignment="Center"            <!-- 水平居中 -->VerticalAlignment="Center">             <!-- 垂直居中 --><Button Click="ok_click"                    <!-- 点击事件 -->Content="确定"                      <!-- 按钮文本 -->Style="{DynamicResource ccbtn}"/>    <!-- 引用样式资源 --></StackPanel></Grid>
</Window>
二、后台代码逻辑

文件:MessageInfo.xaml.cs

using System.Windows;namespace AutoFeed.UserControls
{/// <summary>/// 消息弹窗交互逻辑/// </summary>public partial class MessageInfo : Window{public MessageInfo(){InitializeComponent();}// 关闭窗口事件private void ok_click(object sender, RoutedEventArgs e){this.Close();}// 公共属性:设置消息内容public string Message{get => msg.Text?.ToString() ?? "";set => msg.Text = value;}}
}
三、静态帮助类封装(合并到后台代码)

文件:MessageInfo.xaml.cs(新增静态类)

public static class MessageBoxHelper
{/// <summary>/// 显示消息弹窗(类似 System.Windows.MessageBox)/// </summary>/// <param name="message">消息内容</param>/// <param name="title">窗口标题(默认:"Message")</param>/// <returns>返回值(简化为 OK)</returns>public static MessageBoxResult Show(string message, string title = "Message"){var msgWindow = new MessageInfo{Title = title,                  // 设置窗口标题WindowStartupLocation = WindowStartupLocation.CenterScreen // 窗口居中};msgWindow.Message = message;      // 设置消息内容msgWindow.ShowDialog();           // 显示模态窗口return MessageBoxResult.OK;       // 固定返回值(可根据需求扩展)}
}
四、调用示例
// 常规调用(显示错误消息)
try
{// 业务逻辑代码
}
catch (Exception ex)
{MessageBoxHelper.Show($"端口号格式无效: {ex.Message}", "错误提示");
}// 简化调用(使用默认标题)
MessageBoxHelper.Show("操作成功!");
五、关键功能说明
功能实现方式
自动换行TextBox 中添加 TextWrapping="Wrap",文本超出宽度时自动换行。
字体颜色通过 Foreground 属性设置,如 Foreground="White" 或十六进制色值 #FFFFFF
窗口居中Window 中设置 WindowStartupLocation="CenterScreen"
模态窗口使用 ShowDialog() 显示窗口,确保用户必须关闭窗口后才能操作父窗口。
样式复用通过 Style="{DynamicResource ccbtn}" 引用资源字典中的按钮样式(需提前定义)。
http://www.lryc.cn/news/2394595.html

相关文章:

  • Android之ListView
  • 查服务器信息 常用的一些命令 =^^ =
  • PS裁剪后像素未删除?5步解决“删除裁剪像素”失效问题
  • 《Spring Cloud Gateway 快速入门:从路由到自定义 Filter 的完整教程》​
  • 第3节 Node.js 创建第一个应用
  • 我们来学mysql -- “数据备份还原”sh脚本
  • mkcert实现本地https
  • 【排序算法】快速排序详解--附详细流程代码
  • Kerberos面试内容整理-会话密钥的协商与使用
  • 解决各个系统报错TDengine:no taos in java.library.path问题
  • java helloWord java程序运行机制 用idea创建一个java项目 标识符 关键字 数据类型 字节
  • LVS-NAT 负载均衡群集
  • 免费文本转语音工具体验:祈风TTS使用
  • ipv6与p2p的关系
  • JS和TS的区别
  • Python实现P-PSO优化算法优化BP神经网络分类模型项目实战
  • Linux --进度条小程序更新
  • JVM——回顾:JVM的起源、特性与系统构成
  • 实现MPC钱包
  • 每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
  • 【线上故障排查】缓存热点Key导致Redis性能下降的排查与优化
  • 关于镜像如何装进虚拟机
  • CPU特权级别:硬件与软件协同构建系统安全的基石
  • 智慧体育馆数字孪生,场馆管理智能化
  • 回归算法模型之线性回归
  • 【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA
  • 【Java】在 Spring Boot 中连接 MySQL 数据库
  • 影响服务器稳定性的因素都有什么?
  • 【Qt】Bug:findChildren找不到控件
  • GitHub 趋势日报 (2025年05月30日)