2011-03-02 64 views
10

背景如何时,不存在“主”主窗口中创建WPF系统托盘图标

我们有坐在后台,并利用FileSystemWatcher一个新的文件出现在监视新文件,一个文件夹中的应用它产生了一个窗口。

我需要做的是为这个应用程序创建一个系统托盘图标,以便我们可以添加简单的上下文菜单项(能够关闭应用程序,而无需进入任务管理器是最大的一个)。

问题

所有如何实现系统托盘图标指向的是如何将它添加到WPF窗口不是应用本身的例子,因为我的应用程序没有一个主要的搜索结果当事件发生时窗口和派生窗口我该如何实现?

+0

可能重复http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon) – svick 2011-08-04 10:56:24

+2

检查这个帖子http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon – 2011-03-02 19:03:34

回答

10

将应用程序ShutdownMode设置为OnExplicitShutdown并显示Application.OnStartup的托盘图标。本示例使用WinForms中的NotifyIcon,因此请添加对System.Windows.Forms.dllSystem.Drawing.dll的引用。另外,为托盘图标添加一个嵌入资源。

的App.xaml

<Application x:Class="WpfTrayIcon.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      ShutdownMode="OnExplicitShutdown" 
      > 
    <Application.Resources> 

    </Application.Resources> 
</Application> 

App.xaml.cs

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Windows; 

using NotifyIcon = System.Windows.Forms.NotifyIcon; 

namespace WpfTrayIcon 
{ 
    public partial class App : Application 
    { 
     public static NotifyIcon icon; 

     protected override void OnStartup(StartupEventArgs e) 
     { 
      App.icon = new NotifyIcon(); 
      icon.Click += new EventHandler(icon_Click); 
      icon.Icon = new System.Drawing.Icon(typeof(App), "TrayIcon.ico"); 
      icon.Visible = true; 

      base.OnStartup(e); 
     } 

     private void icon_Click(Object sender, EventArgs e) 
     { 
      MessageBox.Show("Thanks for clicking me"); 
     } 
    } 
} 
[WPF应用程序仅具有一个托盘图标(的
+0

如果该图标通过资源添加到项目属性中,这是一个小的区别:'icon.Icon = MyApp.Properties.Resources.TrayIcon;' – retroj 2017-03-30 01:45:50