InitializeComponent()WPF में क्या काम करता है, और यह कैसे काम करता है?
सामान्य तौर पर पहले, लेकिन मैं विशेष रूप से निर्माण के आदेश के गोर विवरण को जानना चाहूंगा, और जब संलग्न गुण होते हैं तो क्या होता है।
InitializeComponent()WPF में क्या काम करता है, और यह कैसे काम करता है?
सामान्य तौर पर पहले, लेकिन मैं विशेष रूप से निर्माण के आदेश के गोर विवरण को जानना चाहूंगा, और जब संलग्न गुण होते हैं तो क्या होता है।
जवाबों:
के लिए कॉल InitializeComponent()(जिसे आमतौर पर कम से कम डिफ़ॉल्ट निर्माता में कहा जाता है ) Windowऔर UserControlवास्तव में नियंत्रण के आंशिक वर्ग को कॉल करने की एक विधि है (बजाय मैं पहली उम्मीद के अनुसार वस्तु पदानुक्रम को कॉल करता हूं)।
यह विधि लोड हो रही है Window/ UserControlऔर System.Windows.Application.LoadComponent()स्थैतिक विधि के लिए इसे पास करने के लिए XAML के लिए एक URI पता लगाता है । LoadComponent()XAML फ़ाइल को लोड करता है जो URI में पास है, और इसे XAML फ़ाइल के मूल तत्व द्वारा निर्दिष्ट ऑब्जेक्ट के उदाहरण में परिवर्तित करता है।
अधिक विवरण में, का LoadComponentएक उदाहरण XamlParserबनाता है और XAML का एक पेड़ बनाता है। प्रत्येक नोड द्वारा पार्स किया जाता है XamlParser.ProcessXamlNode()। यह BamlRecordWriterक्लास में पास हो जाता है । इसके कुछ समय बाद मैं थोड़ा खो जाता हूं कि कैसे BAML को वस्तुओं में परिवर्तित किया जाता है, लेकिन यह आपको आत्मज्ञान के मार्ग पर मदद करने के लिए पर्याप्त हो सकता है।
नोट: दिलचस्प रूप से, इंटरफ़ेस InitializeComponentपर एक विधि System.Windows.Markup.IComponentConnectorहै, जिसमें से Window/ UserControlआंशिक रूप से उत्पन्न वर्ग में लागू होती है।
उम्मीद है की यह मदद करेगा!
कोड को देखने से हमेशा मदद मिलती है। अर्थात्, आप वास्तव में उत्पन्न आंशिक वर्ग पर एक नज़र डाल सकते हैं (जिसे लोडकम्पोनेंट कहते हैं ) निम्न कार्य करके:
YourClass .g.cs ... उत्पन्न आंशिक वर्ग के लिए कोड है। फिर से, यदि आप इसे खोलते हैं तो आप InitializeComponent पद्धति को देख सकते हैं और इसे LoadComponent कैसे कहते हैं ... और बहुत कुछ।