WPF托盘运行

本文介绍如何将WPF应用最小化到托盘,窗口关闭后进程仍然运行的方法。

依赖

Hardcodet.NotifyIcon.Wpf 是一个专用于WPF的托盘运行库, 点击这里前往 Github 查看点击这里前往 Nuget 查看

代码

准备一个用于在托盘显示的图标文件:app.ico。将其放到项目中。

修改 App.xaml 文件,引入xmlns:tb="http://www.hardcodet.net/taskbar" 命名空间。

修改 App.xaml 文件添加元素 TaskbaIcon ,代码如下

<tb:TaskbarIcon x:Key="Taskbar"
                IconSource="/app.ico">
    <tb:TaskbarIcon.TrayToolTip>
        <Border Background="White" 
                BorderBrush="Black"
                BorderThickness="1"
                CornerRadius="4"
                Width="120"
                Height="40">
            <TextBlock Text="这里是应用提示信息"
                       HorizontalAlignment="Center"
                       VerticalAlignment="Center" />
        </Border>
    </tb:TaskbarIcon.TrayToolTip>
    <tb:TaskbarIcon.ContextMenu>
        <ContextMenu FontSize="14" Placement="AbsolutePoint" Width="100">
            <MenuItem Margin="0,4,0,0" Header="退出"  />
        </ContextMenu>
    </tb:TaskbarIcon.ContextMenu>
</tb:TaskbarIcon>

修改 App.xaml 文件,在 Applicaiton元素上设置应用退出模式

<Application x:Class="Wpf.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:AppAnalysisClientWpf"
             xmlns:tb="http://www.hardcodet.net/taskbar"
             ShutdownMode="OnExplicitShutdown">
</Application>

到此你的WPF程序启动后,右下角托盘中会出现对应的应用图标,窗口关闭也不会立即退出,对着托盘图标右键退出才会结束。

发布时间:2023-07-04

其他阅读

Nginx配置反向代理和负载均衡

Nginx是一个流行的Web容器,作为服务的入口,使用反向代理和负载均衡,达到隐藏和保护内部服务安全的作用,本文会描述Nginx反向代理和负载均衡的配置。

Js使用原型链对对象进行扩展

在C#的扩展方法中,我们了解到了一种不需要修改源对象定义即可为对象添加新的行为的方法,在JavaScript中,我们通过原型链也可以实现类似的效果,为对象添加新的行为。需要一定的Js原型链基础。

使用中间件记录网站访问日志记录

对于网站访问日志的记录,一般情况下都是使用现有的日志服务,比如谷歌分析引入轻量 js 文件即可。本文主要介绍对于现有的 Asp.Net Core 网站使用中间件快速记录访问日志。使用中间件的好处:在服务端进行处理,无视客户端类型(特殊信息无法获取);统一处理,不需要对每个地址重复处理等。

WPF中开启虚拟化提高性能

WPF(Windows Presentation Foundation)是一个强大的框架,它能创建高度响应和美观的桌面应用程序。然而,当处理大量数据时,性能问题可能变得显著。为了解决这些问题,我们可以利用虚拟化来提升WPF应用的性能。

浅析web前端中的MVC模式

MVC是常见的软件架构设计模式,它通过分离关注点改进代码的组织方式。区别于软件设计模式,只是为了解决问题总结出的抽象方法,一种架构模式种往往会用到多种设计模式。