2009-09-24 16 views
118

है, मैं कुल WPF नौसिखिया हूं और आश्चर्य करता हूं कि कोई मुझे कुछ पॉइंटर्स दे सकता है कि ट्रे को कम से कम शुरू करने वाले एप्लिकेशन को कैसे लिखना है। विचार यह है कि यह समय-समय पर एक आरएसएस फ़ीड प्राप्त करता है और नई फीड होने पर टोस्टर-पॉपअप बनाता है।डब्ल्यूपीएफ एप्लीकेशन जिसमें केवल ट्रे आइकन

एप्लिकेशन में अभी भी एक मुख्य विंडो होनी चाहिए (अनिवार्य रूप से केवल सभी फ़ीड प्रविष्टियों वाली एक सूची), लेकिन इसे डिफ़ॉल्ट रूप से छुपाया जाना चाहिए।

मैंने एक्सएएमएल और डब्ल्यूपीएफ के बारे में पढ़ना शुरू कर दिया है और मुझे पता है कि App.xaml में स्टार्टअपयूरी को मेरी मुख्य विंडो को इंगित करना है, लेकिन मुझे नहीं पता कि SysTray आइकन को करने का मुख्य तरीका क्या है और मुख्य को छुपाएं खिड़की (इसका यह भी अर्थ है कि जब उपयोगकर्ता खिड़की को कम करता है, तो उसे ट्रे को कम करना चाहिए, टास्कबार पर नहीं)।

कोई संकेत?

+3

सभी सुझावों के लिए धन्यवाद! WPF-NotifyIcon वह है जो मैं साथ जाऊंगा, क्योंकि एक त्वरित परीक्षण से पता चलता है कि यह काफी आशाजनक और दर्द रहित है। –

उत्तर

94

WPF के लिए कोई NotifyIcon नहीं है।

मेरा एक सहयोगी अच्छे प्रभाव के लिए यह स्वतंत्र रूप से उपलब्ध पुस्तकालय इस्तेमाल किया:

http://www.hardcodet.net/uploads/2009/04/image13.png

+1

शानदार पुस्तकालय। इसका उपयोग करने के लिए इंतजार कर सकते हैं! –

+2

ड्रू, यह लिंक यहां मर गया प्रतीत होता है। क्या आपके पास इस पुस्तकालय के लिए एक वैकल्पिक लिंक है? मैंने एक त्वरित खोज की, लेकिन यह निर्धारित नहीं कर सका कि परिणाम एक ही परियोजना के लिए थे या नहीं। –

+0

@BradLarson, साइट डाउन होने लगती है; लेकिन वैसे भी परियोजना Nuget पैकेज के रूप में उपलब्ध है (डेल का जवाब देखें) –

47

मुझे हाल ही में यही समस्या थी। दुर्भाग्य से, NotifyIcon केवल एक विंडोज़ है। इस समय फर्म नियंत्रण करते हैं, अगर आप इसका उपयोग करना चाहते हैं तो आपको ढांचे के उस भाग को शामिल करना होगा। मुझे लगता है कि यह निर्भर करता है कि आप कितने डब्ल्यूपीएफ शुद्धवादी हैं।

यदि आप प्रारंभ करने का एक तेज़ और आसान तरीका चाहते हैं तो यह WPF NotifyIcon control on the Code Project देखें जो WinForms NotifyIcon पर भरोसा नहीं करता है। एक हालिया संस्करण on the author's website और NuGet package के रूप में उपलब्ध प्रतीत होता है। यह अब तक मेरे लिए सबसे अच्छा और साफ रास्ता लगता है।

  • रिच ToolTips टेक्स्ट के बजाय
  • WPF संदर्भ मेनू और पॉपअप
  • कमान समर्थन और कराई घटनाओं
  • लचीला डेटा डिफ़ॉल्ट संदेशों
  • रिच गुब्बारा संदेशों के बजाय बाध्यकारी द्वारा प्रदान करता है ओएस

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

+2

, कि nuget पैकेज अप्रचलित है अभी तक एक अलग नाम के तहत प्रकाशित है https://www.nuget.org/packages/Hardcodet.NotifyIcon.Wpf/ – mcy

77

आपको System.Windows.Forms से NotifyIcon नियंत्रण का उपयोग करना होगा, या वैकल्पिक रूप से आप Windows API द्वारा प्रदान किए गए नोटिफ़िक आइकन API का उपयोग कर सकते हैं। डब्ल्यूपीएफ इस तरह के बराबर नहीं प्रदान करता है, और माइक्रोसॉफ्ट कनेक्ट पर कई बार अनुरोध किया गया है।,

ShowInTaskbar = झूठी साथ एक WPF विंडो बनाएँ:

मैं जो एक WPF आवेदन के भीतर से घटक NotifyIcon System.Windows.Forms का उपयोग करता GitHub पर कोड है, कोड https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs

पर देखी जा सकती है यहाँ सारांश बिट्स हैं और जो एक गैर-दृश्यमान राज्य में भरा हुआ है।

वर्ग स्तर पर:

private System.Windows.Forms.NotifyIcon notifyIcon = null; 

OnInitialize के दौरान():

notifyIcon = new System.Windows.Forms.NotifyIcon(); 
notifyIcon.Click += new EventHandler(notifyIcon_Click); 
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick); 
notifyIcon.Icon = IconHandles["QuickLaunch"]; 

onLoaded के दौरान():

notifyIcon.Visible = true; 

और बातचीत के लिए (notifyIcon.Click के रूप में दिखाया गया है और ऊपर डबलक्लिक करें):

void notifyIcon_Click(object sender, EventArgs e) 
{ 
    ShowQuickLaunchMenu(); 
} 

यहाँ से आप इस तरह के संदर्भ मेनू, पॉप-अप विंडो, आदि

यह इतना आसान है के रूप में WPF नियंत्रण और API के उपयोग को फिर से शुरू कर सकते हैं। घटक को होस्ट करने के लिए आपको वास्तव में एक WPF विंडो की आवश्यकता नहीं है, यह एक WPF ऐप में एक परिचय करने का सबसे सुविधाजनक तरीका है (जैसे विंडो आमतौर पर App.xaml के माध्यम से परिभाषित डिफ़ॉल्ट प्रविष्टि बिंदु है), वैसे ही, आप ' टी को डब्ल्यूपीएफ रैपर या तीसरे पक्ष के नियंत्रण की आवश्यकता नहीं है, क्योंकि एसडब्ल्यूएफ घटक किसी भी .NET Framework स्थापना में मौजूद है, जिसमें डब्लूपीएफ समर्थन भी है क्योंकि यह .NET Framework (जो सभी वर्तमान और भविष्य .NET Framework संस्करणों का निर्माण करता है) का हिस्सा है। आज तक, माइक्रोसॉफ्ट से कोई संकेत नहीं है कि एसडब्ल्यूएफ समर्थन जल्द ही .NET Framework से हटा दिया जाएगा।

उम्मीद है कि मदद करता है।

यह एक छोटा सा पनीर है जिसे आपको ट्रे-आइकन प्राप्त करने के लिए प्री-3.0 फ्रेमवर्क घटक का उपयोग करना है, लेकिन समझ में आता है कि माइक्रोसॉफ्ट ने इसे समझाया है, डब्ल्यूपीएफ के दायरे में सिस्टम ट्रे की कोई अवधारणा नहीं है। डब्ल्यूपीएफ एक प्रेजेंटेशन टेक्नोलॉजी है, और अधिसूचना आइकन एक ऑपरेटिंग सिस्टम (एक "प्रस्तुति" नहीं है) अवधारणा है।

+2

विस्तृत स्पष्टीकरण के लिए धन्यवाद! –

+2

+1, यह अकेले स्पष्टीकरण के लिए चयनित उत्तर होना चाहिए। उस अंतिम पैराग्राफ के लिए – ToastyMallows

+1

कुडोस। यही वही था जो मुझे जानने की ज़रूरत थी, और यह एक सरल डेवलपर की smacks, सरल, अंतर्दृष्टिपूर्ण विस्तार का यह स्तर है। – series0ne

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