尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

WPF应用最小化到系统托盘 - 实践

WPF应用最小化到系统托盘 - 实践
📅 发布时间:2026/6/19 17:25:44

WPF应用最小化到系统托盘 - 实践

前言

在现代桌面应用开发中,系统托盘(System Tray)功能已经成为用户体验的重要组成部分。特别是对于需要长时间运行的应用程序,如即时通讯工具、音乐播放器、系统监控工具等,最小化到系统托盘不仅可以节省任务栏空间,还能让应用在后台持续运行,随时为用户提供服务。

本文以Rouyan这个WPF应用为例,说明在WPF中如何实现最小化到系统托盘。

选择

在WPF中实现系统托盘功能,开发者通常有以下几种选择:

1、System.Windows.Forms.NotifyIcon:最传统的方式,需要引用WinForms

2、Hardcodet.NotifyIcon.Wpf:专为WPF设计的托盘组件

3、H.NotifyIcon.Wpf:Hardcodet的现代维护版本

这里我选择的是H.NotifyIcon.Wpf,选择H.NotifyIcon.Wpf的优势:

1、现代化维护:相比原版Hardcodet,H.NotifyIcon.Wpf有更活跃的维护和bug修复

2、完全兼容:保留了原版的API和XAML命名空间,迁移成本为零

3、WPF原生:无需引入WinForms依赖,与WPF的数据绑定和样式系统完美集成

4、功能丰富:支持气泡提示、上下文菜单、多种鼠标事件等

H.NotifyIcon.Wpf项目地址:https://github.com/HavenDV/H.NotifyIcon

使用

先描述一下,我们想要实现的效果,我想要点击最小化与关闭的时候,让这个应用最小化到系统托盘,然后点击系统托盘的图标显示这个应用,或者右键系统托盘的图标,有两个选项,一个是显示窗口,一个是退出,点击退出才真的退出程序。

第一步安装nuget包:

第二步在主窗口中添加控件:

先添加xmlns:tb="http://www.hardcodet.net/taskbar"与StateChanged="Window_StateChanged"。

 

ToolTipText是你鼠标悬浮在图标那会出现的文字,TrayLeftMouseDown是鼠标左键点击系统托盘图标事件,ContextMenu是右键系统托盘图标会出现的选项。

现在在code-behind也就是主页面的xaml.cs中写这些事件处理程序即可。

首先关闭应用时,让其不关闭而是最小化:

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
WindowState = WindowState.Minimized;
}

然后是窗体改变事件处理程序:

private void Window_StateChanged(object sender, System.EventArgs e)
{
if (WindowState == WindowState.Minimized)
{
Hide();
TrayIcon.Visibility = Visibility.Visible;
}
}

鼠标左键点击系统托盘图标:

private void TrayIcon_TrayLeftMouseDown(object sender, RoutedEventArgs e)
{
ShowMainWindow();
}
private void ShowMainWindow()
{
Show();
WindowState = WindowState.Normal;
Activate();
TrayIcon.Visibility = Visibility.Collapsed;
}

鼠标右键系统托盘出现的显示窗口与退出的事件处理程序:

private void ShowWindow_Click(object sender, RoutedEventArgs e)
{
ShowMainWindow();
}
private void ExitApp_Click(object sender, RoutedEventArgs e)
{
TrayIcon.Dispose();
Application.Current.Shutdown();
}

全部代码:

项目地址:https://github.com/Ming-jiayou/Rouyan

最终效果:

这样就成功实现了在WPF应用中实现最小化到系统托盘,希望对你有所帮助。

相关新闻

  • 2025年知名的服务器网卡TOP品牌厂家排行榜
  • 2025年靠谱的KNX智能家居系统解决方案优质厂家推荐榜单
  • 二分(解方程p1024)

最新新闻

  • 2026长沙黄金回收实力排行公布 禹竞名奢汇远超小型个体商户 - 名奢变现站
  • 虚高报价藏陷阱,2026南京黄金变现避坑全攻略 - 奢侈品回收评测
  • ML生产化实战:从模型上线到稳定服务的工程体系
  • 医疗AI落地难?重建临床信任的三大支柱
  • AI辅助MES开发:聚焦KingFusion组态与JavaScript双引擎提效
  • 深耕乌市十余载匠心护航爱车|乌鲁木齐诚信贴膜工厂店,打造本地靠谱贴膜服务标杆 - 速递信息

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号