2010-08-12 18 views
29

मेरे पास एक विंडो है जो एक और विंडो पॉप-अप करती है। मैं चाहता हूं कि दूसरा विंडो किसी ऑब्जेक्ट को पहली विंडो पर वापस करने में सक्षम हो, जब कोई बटन दबाया जाए। यह मैं कैसे करूंगा?डब्ल्यूपीएफ विंडो रिटर्न वैल्यू

+0

पहले खिड़की को नई विंडो मोडल है? – Robaticus

+0

पहले मुझे यह भी नहीं पता था कि एक मोडल विंडो क्या थी लेकिन मैंने इसे समझ लिया। मामूली संपादन के साथ नीचे थॉमस कोड काम किया। – Reflux

उत्तर

43

आप दूसरी विंडो पर एक संपत्ति का पर्दाफाश कर सकते हैं, ताकि पहली विंडो इसे पुनर्प्राप्त कर सके।

public class Window1 : Window 
{ 
    ... 

    private void btnPromptFoo_Click(object sender, RoutedEventArgs e) 
    { 
     var w = new Window2(); 
     if (w.ShowDialog() == true) 
     { 
      string foo = w.Foo; 
      ... 
     } 
    } 
} 

public class Window2 : Window 
{ 
    ... 

    public string Foo 
    { 
     get { return txtFoo.Text; } 
    } 

} 
+1

यह काम नहीं करता है क्योंकि उपयोगकर्ता विंडो के साथ इंटरैक्ट करता है और एक पैर दबाता है इससे पहले कि मैं पैरेंट विंडो को मूल्य प्राप्त करूं। – Reflux

+3

मैंने इसे समझ लिया। समस्या यह थी कि अगर (w.ShowDialog() == झूठा) होना चाहिए। – Reflux

+0

@ रेफ्लक्स: क्या आप निश्चित हैं? जब उपयोगकर्ता संवाद को रद्द करता है तो ShowDialog झूठी रिटर्न देता है, इसलिए संभवतः आप उस मामले में मान को –

17

आप एक संपत्ति का खुलासा नहीं करना चाहता है, और आप उपयोग थोड़ा और स्पष्ट बनाना चाहते हैं, तो आप कर सकते हैं ओवरलोड ShowDialog:

public DialogResult ShowDialog(out MyObject result) 
{ 
    DialogResult dr = ShowDialog(); 
    result = (dr == DialogResult.Cancel) 
     ? null 
     : MyObjectInstance; 
    return dr; 
} 
0

मैं जानता हूँ कि यह एक पुराने एक है, लेकिन मैं एक WPF एप्लिकेशन के लिए वही जानकारी ढूंढ रहा था जिस पर मैं काम कर रहा हूं। मैंने पाया इस साइट वास्तव में मददगार:

http://www.dreamincode.net/forums/topic/206458-the-right-way-to-get-values-from-form1-to-form2/

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

एक तरफ ध्यान दें पर, नई विंडो पर मान पास करने के, यह वास्तव में मददगार था:

WPF passing string to new window

+1

स्टैक ओवरव्लो में आपका स्वागत है। जबकि आपके द्वारा प्रदान किए गए लिंक सहायक हो सकते हैं, लेकिन मुख्य बिंदुओं को सीधे आपके पोस्ट में रखना बेहतर होता है। इस तरह, यदि आपका लिंक टूटा हुआ है और उपयोग करना आसान है और अधिक सहायक है तो आपका उत्तर अप्रासंगिक नहीं होता है। इसलिए मैं तदनुसार आपके उत्तर को संपादित करने की अनुशंसा करता हूं। सादर – YakovL

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