2011-03-02 8 views
10

पृष्ठभूमिWPF सिस्टम ट्रे चिह्न बनाने के लिए कैसे जब कोई "मुख्य" मेजबान खिड़की से मौजूद है

हम एक आवेदन है कि पृष्ठभूमि में बैठता है और FileSystemWatcher का इस्तेमाल नई फ़ाइलें, के लिए एक फ़ोल्डर नजर रखने के लिए जब एक नई फ़ाइल प्रकट होता है यह एक खिड़की फैलता है।

मुझे इस एप्लिकेशन के लिए सिस्टम ट्रे आइकन बनाना है ताकि हम इसमें सरल संदर्भ मेनू आइटम जोड़ सकें (कार्य प्रबंधक में जाकर ऐप को बंद करने में सक्षम होना सबसे बड़ा है)।

प्रश्न

कैसे कैसे एक WPF खिड़की नहीं आवेदन ही में जोड़ने के लिए के उदाहरण के लिए एक सिस्टम ट्रे आइकन बिंदु लागू करने के लिए, के बाद से मेरे ऐप एक मुख्य नहीं है के लिए खोज परिणामों के सभी विंडो और स्पॉन्स विंडोज़ जब कोई घटना होती है तो मैं इसे कैसे कार्यान्वित कर सकता हूं?

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon) – svick

+2

इस पोस्ट को जांचें http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon –

उत्तर

10

एप्लिकेशन ShutdownMode से OnExplicitShutdown पर सेट करें और Application.OnStartup से ट्रे आइकन प्रदर्शित करें। यह उदाहरण WinForms से NotifyIcon का उपयोग करता है, इसलिए System.Windows.Forms.dll और System.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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^