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

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.xdnf.cn/news/719227.html

相关文章:

  • 小白畅通Linux之旅-----Linux安全管理
  • Ubuntu系统下Docker部署Dify保姆级教程:实现内网穿透远程访问
  • 超声波清洗机的作用是什么?使用超声波清洗机可以去除毛刺吗?
  • 非常好看网站维护带倒计时模板+维护结束模板
  • [嵌入式实验]实验一:点亮LED
  • Cisco Packer Tracer 中 VLAN 与三层交换机
  • UDS TP层参数
  • 【面板数据】各地区新型数字基础设施数据集(2002-2025年)
  • Day 39
  • 结构体对齐和结构体相关宏
  • day39 图像数据与显存
  • Cadence Innvous导出GDS没有STDCELL/IO/NET/VIA问题的解决方法
  • 输电线路的“智慧之眼”:全天候可视化监测如何赋能电网安全运维
  • Cmake编译glog成功并在QT中测试成功步骤
  • Mac本地安装MySQL jdbc Driver
  • 性能测试-jmeter实战1
  • R²AIN SUITE 驱动制造业变革:从灯塔实践到企业级落地方案
  • [Vue2]判断引用组件是否注册了 $emit 对应的事件
  • 网络摄像机POE交换机选型指南:技术参数与场景适配深度解析
  • 使用C# 快速删除Excel表格中的重复行数据-详解
  • HALCON常用算子
  • 【读代码】BabyAGI:自我构建的自主代理框架深度解析
  • Linux入门
  • C语言中函数指针和指针函数的定义及用法
  • 【leetcode】19. 删除链表的倒数第N个节点
  • CppCon 2014 学习第3天:Viewing the world through array-shaped glasses
  • 计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍
  • Mybatis(Plus)对JSON / Array类型进行序列化
  • 2.环境搭建
  • 项目更改权限后都被git标记为改变,怎么去除