2010-03-06 16 views
7

मेरा आवेदन एक ट्रे आइकन, जो जब दोहरा-क्लिक किया, खाल या आवेदन खिड़की से पता चलता है। मेरी समस्या यह है कि अगर मैं छिपी हुई स्थिति में कम से कम राज्य में था, तो मैं खिड़की को अग्रभूमि में नहीं ला सकता।WPF: विंडो को कम से कम रहता है, तब भी जब की स्थापना WindowState स्पष्ट

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

नीचे कोड सिर्फ इतना है कि करना चाहिए, लेकिन किसी कारण से ऐसा नहीं होता:

private void TrayIcon_DoubleClick(object sender, EventArgs e) 
{ 
    if (this.Visibility == Visibility.Hidden) 
    { 
     this.Visibility = Visibility.Visible; 
     this.WindowState = WindowState.Normal; 
     this.Activate(); 
    } 
    ... 
} 

आवेदन कम से कम रहता है और अग्रभाग में नहीं लाया जाता है। सक्रिय करें()ट्रैयिकॉन_DoubleClick() इंगित करता है कि राज्य वास्तव में सामान्य पर सेट है।

उत्तर

12

मैं पार MSDN मंच और it got answered there पर अपने प्रश्न पोस्ट। जवाब के शब्दों में: है कि और अधिक तरीकों की तरह हैं खिड़की पर


कुछ गुण, अर्थ में वे जटिल कार्यों होने के कारण, पिछली कार्रवाई पहले से ही पूरा कर लिया है के बाद क्या करने की जरूरत है। ऐसा होने का एक तरीका Dispatcher.BeginInvoke का उपयोग कर रहा है। यदि आप इस तरह दिखने के लिए अपना कोड बदलते हैं, तो इसे काम करना चाहिए:

if (this.Visibility == Visibility.Hidden) 
{ 
    this.Visibility = Visibility.Visible; 
    Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, 
     new Action(delegate() 
     { 
      this.WindowState = WindowState.Normal; 
      this.Activate(); 
     }) 
    ); 
} 

मैंने इसे आजमाया और यह मेरे लिए समस्या तय कर दी। साथ ही, मुझे लगता है कि आप this.Activate() भी छोड़ सकते हैं।

+5

ठीक है, जो समस्या को हल करता है लेकिन वह बेकार नहीं लगता है? मेरा मतलब है, आप कैसे जान सकते हैं कि आप संपत्ति का उपयोग कब कर सकते हैं या नहीं? मुझे यह बहुत अजीब लगता है ... –

1

मुझे एक बेहतर तरीका मिला। चूंकि समस्या तब होती है जब खिड़की की दृश्यता बदलती है और खिड़की की स्थिति मैं दृश्यता के बजाय शोइन टास्कबार को बदल रहा हूं। वैसे भी ShowInTaskBar = true के साथ एक न्यूनतम विंडो एक छिपी हुई खिड़की की तरह है।

0

उपयोगकर्ता परिप्रेक्ष्य से कम से कम आइकन पर क्लिक करें, यह एप्लिकेशन के सभी उदाहरणों की एक सूची दिखाएगा। इस सूची के सदस्य पर क्लिक करें अधिकतम चयन करें। नोट कम से कम आइकन पर क्लिक करने से नोट बंद विकल्प के साथ एक मेनू लाएगा। अधिकतम विकल्प प्राप्त करने के लिए आपको उस आइकन पर राइट क्लिक करना होगा जो आइकन पर क्लिक करते समय दिखाई देता है।