शुरुआत में एक्सएएमएल कंपाइलर को .NET ऑब्जेक्ट्स के "पेड़" बनाने में सक्षम बनाने के लिए लिखा गया था, माइक्रोसॉफ्ट के भीतर 101 परियोजनाएं थीं जो एक्सएएमएल का इस्तेमाल करती थीं। एक्सएएमएल कंपाइलर WPF के बारे में कुछ भी नहीं जानता है।
"नाम" संपत्ति WPF द्वारा परिभाषित की गई है और XAML कंपाइलर द्वारा इसके बारे में ज्ञात नहीं है। डब्ल्यूपीएफ नाम संपत्ति को "नाम TAG" जैसा ही चिह्नित करता है जो XAML कंपाइलर द्वारा समर्थित है। "X: name" में "x" XAML xml स्कीमा द्वारा परिभाषित "नाम" का उपयोग कर रहा है, "नाम" कहता है कि दिए गए ऑब्जेक्ट पर "नाम" नामक एक संपत्ति खोजें। अधिक जानकारी के लिए In WPF, what are the differences between the x:Name and Name attributes? देखें।
एक्सएएमएल कंपाइलर उपयोगकर्ता नियंत्रण के साथ किए गए असेंबली को लोड किए बिना उपयोगकर्ता नियंत्रण के साथ क्या कर सकता है, उसमें बहुत सीमित है। चूंकि असेंबली को लोड करने से पहले एक्सएएमएल को संकलित करने की आवश्यकता है, इसलिए एक्सएमएल कंपाइलर स्पष्ट रूप से असेंबली को उसी नियंत्रण में लागू नहीं कर सकता है जो एक ही असेंबली में लागू होता है। इसलिए एक्सएएमएल कंपाइलर यह भी नहीं जानता कि आइटम उपयोगकर्ता नियंत्रण है।
Properties that are defined on a user control (or its parent class) can therefore not be accessed. “Name” is a property that is defined in the parent (or super-parent) of a custom control.
एक्सएएमएल कंपाइलर सिर्फ "संपत्ति को संपत्ति के रूप में परिभाषित नहीं किया गया" कह सकता है; अगर ऐसा होता है, तो सोचें कि कितने लोग एक साधारण कस्टम नियंत्रण काम करने में असफल हो जाएंगे! इसलिए XAML कंपाइलर का एक विशेष मामला है जो कोड का अर्थ "अनुमान लगाने" द्वारा एक और अधिक उपयोगी त्रुटि संदेश देता है। इसका अनुमान ज्यादातर सही है।
सबसे सरल उपयोगकर्ता नियंत्रण के अलावा कुछ भी अपनी असेंबली में होना आवश्यक है, हालांकि उपयोगकर्ता सरल नियंत्रण इतना आम है कि उनके लिए एक विशेष मामला सार्थक माना जाता था।
स्रोत
2014-02-12 13:31:06
'उपयोगकर्ता नियंत्रण (या उसके मूल वर्ग) पर परिभाषित गुणों को इसलिए एक्सेस नहीं किया जा सकता है।' - यह मेरे लिए समझ में नहीं आता है। बेस क्लास में परिभाषित अन्य गुणों को सेट करना ' ', इसलिए मुझे समझ में नहीं आता कि क्यों संकलक 'नाम' WPF-property के मूल्य को उसी तरह सेट नहीं कर सकता –
nevermind