2013-07-16 34 views
7

मैं WPF का उपयोग कर सिस्टम ट्रे में एप्लिकेशन को कम करना चाहता हूं। क्या इस परिणाम को प्राप्त करने का एकमात्र तरीका "NotifyIcon" है? यदि हां, तो WPF में "NotifyIcon" का उपयोग करने के लिए किस नामस्थान की आवश्यकता है?क्या मैं WPF में NotifyIcon का उपयोग कर सकता हूं?

यदि संभव हो तो "नोटिफ़िकॉन" के साथ, कृपया कुछ संकेत दें, मैं अपने मेनविंडो में इसका उपयोग कैसे कर सकता हूं?

मेरे मुख्य विंडो है,

public partial class MonthView : MetroWindow 
{ 

    public DateTime SelectedDate { get; set; } 

    public MonthView() 
    { 

      InitializeComponent(); 
      calMain.DisplayDate = DateTime.Today; 
      Globals._globalController = new AppController(); 
      Globals._globalController.appTaskManager.setupLocal(); 
      Globals._globalController.setMonthViewWindow(this); 

    } 

    public void calItemSelectedDate(object sender, SelectionChangedEventArgs e) 
    { 
     DateTime d; 
     if (sender is DateTime) 
     { 
      d = (DateTime)sender; 
     } 
     else 
     { 
      DateTime.TryParse(sender.ToString(), out d); 
     } 

     SelectedDate = d; 

     ShowActivity(d); 
    } 

    public void ShowActivity(DateTime date) 
    { 
     DayView Activity = new DayView(date); 
     Activity.Show(); 
     this.Hide(); 
    } 

    private void SetButton_Click(object sender, RoutedEventArgs e) 
    { 
     SettingsView set = new SettingsView(); 
     set.Show(); 
     this.Hide(); 
    } 

} 
+0

मुझे लगता है कि यह एक डुप्लिकेट है http://stackoverflow.com/questions/10230579/easiest-way-to-have-a-program-minimize-itself-to-the-system-tray-using-net-4 – Swift

उत्तर

17

NotifyIcon WPF में लागू नहीं है के रूप में यह फार्म में है, लेकिन आप अभी भी विंडोज फार्म NotifyIcon, यह System.Windows में रहता है उपयोग कर सकते हैं फोरम नम्सस्पेस।

इन ट्यूटोरियल पर एक नज़र डालें, वे अपनी आवश्यकताओं को कवर कर सकता है:

सरल समाधान है, सीधे NotifyIcon का उपयोग कर: http://www.abhisheksur.com/2012/08/notifyicon-with-wpf-applications.html

अधिक उन्नत समाधान, नए पुस्तकालय पर अधिक सुविधाओं के साथ NotifyIcon आधारित: http://www.codeproject.com/Articles/36468/WPF-NotifyIcon

अधिक जानकारी के बारे में NotifyIcon यहां पाया जा सकता: http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx

+1

धन्यवाद। System.Windows.Forms और System जोड़ने के बाद। एप्लिकेशन के संदर्भ में ड्रॉइंग (आइकन के लिए), यह ठीक काम करता है। – Dinesh

+0

सुनने के लिए अच्छा :) –

7

हां, यह संभव है, और मैंने इसे अपनी व्यक्तिगत परियोजना में सफलता के साथ उपयोग किया। फिलिप सुमी http://www.hardcodet.net/projects/wpf-notifyicon द्वारा लिखित एक उत्कृष्ट नियंत्रण है। मैंने सटीक रूप से इसका इस्तेमाल किया और यह वास्तव में बहुत अच्छा काम करता है और अच्छा (व्यक्तिपरक) दिखता है।

image

बस इतना ध्यान रखें: संदर्भ लाइसेंस ध्यान देना, बाहर की जाँच अगर आप अपने परियोजना में उपयोग कर सकते हैं।

+0

मैंने आपके द्वारा वर्णन में वर्णित लिंक देखा है। लेकिन, मुझे समझ में नहीं आता, मैं अपनी दृश्य विंडो में इसका उपयोग कैसे कर सकता हूं? – Dinesh

+0

@ दिनेश: आपको इसे एक WPF नियंत्रण की तरह उपयोग करने की आवश्यकता है। यह ऐसा कुछ नहीं है जिसे संक्षिप्त उत्तर में समझाया जा सके। कोड डाउनलोड करें, एक नमूना चलाएं और देखें कि इसका उपयोग कैसे किया जाता है। – Tigran

+0

NotifyIcon बनाने के लिए, मुझे किस नामस्थान का उपयोग करना चाहिए? – Dinesh

2

आप App.xaml.cs

using System.Drawing; 

namespace DDD 
{ 
    /// <summary> 
    /// Interaction logic for App.xaml 
    /// </summary> 
    public partial class App : Application 
    { 
     System.Windows.Forms.NotifyIcon nIcon = new System.Windows.Forms.NotifyIcon(); 
     public App() 
     { 
      nIcon.Icon = new Icon(@"path to ico"); 
      nIcon.Visible = true; 
      nIcon.ShowBalloonTip(5000, "Title", "Text", System.Windows.Forms.ToolTipIcon.Info); 
      nIcon.Click += nIcon_Click; 
     } 

     void nIcon_Click(object sender, EventArgs e) 
     { 
      //events comes here 
      MainWindow.Visibility = Visibility.Visible; 
      MainWindow.WindowState = WindowState.Normal; 
     } 
    } 
} 

में और अपने Mainwindow.xaml.cs में NotifyIcon के लिए अपने कोड सेट कर सकते हैं:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     e.Cancel = true; 
     this.Visibility = Visibility.Hidden; 
    } 

सुनिश्चित करें कि Window_Closing समापन से आबद्ध है मुख्य खिड़की की घटना।

यदि आप अपनी मुख्य विंडो को "बंद" करते हैं, तो विंडो दृश्यता छिपी हुई है लेकिन आपका ऐप अभी भी चल रहा है। अधिसूचना क्षेत्र में NotifyIcon पर सरल क्लिक करें और आपकी विंडो वापस आ गई है।

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