2011-03-02 25 views
10

Arkaplanhayır "Ana" konak penceresi var olduğunda WPF Sistem Tepsisi Simgesi nasıl oluşturulur

Biz arka planda oturur ve yeni bir dosya göründüğünde yeni dosyalar için bir klasör izlemek için FileSystemWatcher kullanan bir uygulamaya sahip bir pencere açar.

Yapmam gereken şey, bu uygulama için basit bir içerik menüsü öğesi ekleyebilmemiz için bir sistem tepsisi simgesi oluşturmaktır (bu, görev yöneticisine gitmeden uygulamayı kapatabilmek en büyük olanıdır).

Soru

benim app ana olmadığı için, bir WPF penceresinin değil uygulamanın kendisi eklemek için nasıl örneklere bir sistem tepsisi simgesi noktasını nasıl uygulanacağı için arama sonuçlarının tamamı Bir olay meydana geldiğinde pencere ve spawns pencereleri bunu nasıl uygulayabilirim?

+0

olası yinelenen http://stackoverflow.com/questions/1472633/wpf uygulama yani salt-has-a-tepsi-simgesi) – svick

+2

Kontrol Bu yazı http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon –

cevap

10

Seti uygulama OnExplicitShutdown için ShutdownMode ve Application.OnStartup gelen tepsi simgesi görüntüler. Bu örnek, WinForms den NotifyIcon kullanır, bu nedenle System.Windows.Forms.dll ve System.Drawing.dll bir başvuru için. Ayrıca, Tepsi Simgesi için gömülü bir kaynak eklemek.

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"); 
     } 
    } 
} 
[yalnızca tepsi simgesi WPF Uygulama] (arasında
+0

ise simgesi proje özelliklerinde Kaynaklar ile ilave edilir, bu küçük fark vardır: 'icon.Icon = MyApp.Properties.Resources.TrayIcon;' – retroj

İlgili konular