2012-01-17 13 views
8

मोडल विंडो से मुख्य WPF विंडो की विधि को कैसे कॉल करें?मोडल विंडो से मुख्य WPF विंडो की विधि को कैसे कॉल करें?

(वास्तव में मैं MainWindow.xaml.cs जब मैं कुछ मॉडल विंडो को बंद से कुछ टाइमर शुरू करना चाहते हैं।)

धन्यवाद!

उत्तर

15

आप अपनी दूसरी विंडो खोलने से पहले मुख्य विंडो को अपने मालिक के रूप में निर्दिष्ट करने से पहले क्या कर सकते हैं, फिर मोडल विंडो से मालिक की संपत्ति को कॉल करें, इसे मेनविंडो ऑब्जेक्ट में डालें और आप विधि को निष्पादित करने में सक्षम होंगे।

// Code in main window 
ModalWindow window = new ModalWindow(); 
window.Owner = this; 
window.ShowDialog() 

//Code on the modal window 
var myObject = this.Owner as MainWindow; 
myObject.MyMethod(); // Call your method here. 
+0

कॉल करने से पहले, मोडल करने के लिए माता पिता से पारित करने के लिए तो यह निर्माता या सार्वजनिक संपत्तियों में पारित है यदि मैं यह मिलता है: "एक खिड़की है कि नहीं दिखाया गया है करने के लिए मालिक संपत्ति सेट नहीं कर सकता पहले से "। ऐसा लगता है कि खिड़की.ऑनर शोडियलोग से पहले नहीं हो सकता ... – pzogr

2

ऐसा करने के कई तरीके हैं।

आप मोडल विंडो के निर्माता को अधिभारित कर सकते हैं जैसे कि आप उस फ़ंक्शन या मुख्य विंडो के संदर्भ में पारित कर सकते हैं। या, उस विंडो में एक संपत्ति जोड़ें।

आप मुख्य विंडो कोड में अगली पंक्ति पर टाइमर भी शुरू कर सकते हैं जो मोडल विंडो दिखाता है।

2
  • इस मॉडल खिड़की MainWindow से खुल जाएगा, तो इस तरह कहते हैं

    modalWindow.ShowDialog()

    यह इस कॉल के बाद कोड जोड़ने के लिए पर्याप्त बस है जाने और इसके बाद निष्पादित किया जाएगा मोडल खिड़की बंद

  • मोडल विंडो प्रपत्र कहीं और लेकिन समापन पर complitely असंबंधित ओर से कोड चलाना चाहिए खोला जाता है, का उपयोग कर सकते, उदाहरण के लिए, Commands या RelayCommand (प्रत्यक्ष प्रतिनिधि कॉल की तरह)।

उम्मीद है कि इससे मदद मिलती है।

0

आप एक मोड हैंडलर को मोडल डायलॉग के "समापन" ईवेंट में संलग्न कर सकते हैं, जो इस कार्यक्रम को आग लगने पर मुख्य कार्यक्रम में निष्पादित किया जाएगा।

5
public class ModalWindow : Window 
{ 
    private MainWindow _parent; 
    public ModalWindow(MainWindow parent) 
    { 
     _parent = parent; 
     Owner = parent; 
    } 

    void CallParent() 
    { 
     _parent.Call(); 
    } 
} 

मैं सुझाव दूंगा कि इस तरह का पैटर्न एक कोड गंध है।

यदि आपका लक्ष्य मोडल से माता-पिता से जानकारी पास करना है, तो मोडल विंडो पर गुणों का खुलासा करने के लिए बेहतर है, और बंद होने के बाद, उन मानों को पढ़ें और माता-पिता में जो भी क्रियाएं आवश्यक हैं, प्रदर्शन करें।

अपने लक्ष्य को जानकारी ShowDialog().

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