WPF托盘图标功能

安装Nuget包

Install-Package Hardcodet.NotifyIcon.Wpf

App.xaml添加:

复制代码
<Application
    x:Class="ToDoList.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:cg2="clr-namespace:CgdataBase"
    xmlns:cvt="clr-namespace:CgdataBase.Converters;assembly=CgdataBase.WPF"
    xmlns:local="clr-namespace:ToDoList"
    xmlns:tb="http://www.hardcodet.net/taskbar"
    xmlns:vm="clr-namespace:ToDoList.ViewModels">
    <Application.Resources>
        <ResourceDictionary>
            <ContextMenu x:Key="SysTrayMenu" x:Shared="false">
                <MenuItem Command="{Binding ExitApplicationCommand}" Header="退出" />
            </ContextMenu>

            <tb:TaskbarIcon
                x:Key="Taskbar"
                ContextMenu="{StaticResource SysTrayMenu}"
                DoubleClickCommand="{Binding ShowWindowCommand}"
                IconSource="App.ico"
                ToolTipText="ToDoList">
                <tb:TaskbarIcon.DataContext>
                    <vm:NotifyIconViewModel />
                </tb:TaskbarIcon.DataContext>
            </tb:TaskbarIcon>
        </ResourceDictionary>
    </Application.Resources>
</Application>
复制代码

App.xaml.cs添加:

复制代码
using Hardcodet.Wpf.TaskbarNotification;
using System.Windows;

namespace ToDoList
{
    public partial class App : Application
    {
        private TaskbarIcon _taskbar;

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            _taskbar = (TaskbarIcon)FindResource("Taskbar");
        }
    }
}
复制代码

NotifyIconViewModel.cs文件

复制代码
using Prism.Commands;
using Prism.Mvvm;

namespace ToDoList.ViewModels
{
    public class NotifyIconViewModel : BindableBase
    {
        public DelegateCommand ShowWindowCommand { get; private set; }
        public DelegateCommand ExitApplicationCommand { get; private set; }

        public NotifyIconViewModel()
        {
            ShowWindowCommand = new DelegateCommand(OnShowWindow);
            ExitApplicationCommand = new DelegateCommand(OnExitApplication);
        }

        private void OnShowWindow()
        {
            //显示主窗体
        }

        private void OnExitApplication()
        {
            //退出应用
        }
    }
}
复制代码

 

posted @   wzwyc  阅读(388)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示