का उपयोग {Binding ElementName=foo}
है, क्या यह दृश्य या तार्किक पेड़ को देखेगा?बाइंडिंग एलिमेंटनाम। क्या यह विजुअल ट्री या लॉजिकल ट्री
Of logical and visual trees in WPF | Data See, Data Do
जब तार्किक पेड़ फर्क पड़ता है?
जब ऐसी में {बाइंडिंग ElementName = फू} के रूप में एक नाम को खोजते,, खोज वंश एक नाम गुंजाइश तलाश में ऊपर चलता है, फिर बस के रूप में यह दाय संपत्तियों के लिए करता है।
ElementName binding in Silverlight via Attached Behaviours
करने के लिए बाध्य करने के लिए आप एक शक्तिशाली तंत्र देने, ElementName और RelativeSource बाइंडिंग प्रदान करता हैआदेश में इस सक्षम करने के लिए, WPF अपने दृश्य ट्री के अंतर्गत अन्य तत्वों लगाने
संपादित करें:
ऐसा लगता है कि लॉजिकल ट्री ElementName
द्वारा बाध्यकारी के लिए उपयोग किया जाता है।
तर्क # 1.
MSDN लेख FrameworkElement Class के अनुसार:
FrameworkElement फैली UIElement और निम्नलिखित क्षमताएं जोड़ता है:
- बाध्यकारी डेटा और गतिशील संसाधन संदर्भ के लिए समर्थन: डेटा बाध्यकारी और संसाधनों के लिए संपत्ति-स्तरीय समर्थन है कार्यान्वित DependencyProperty वर्ग द्वारा और संपत्ति प्रणाली में सन्निहित है, लेकिन एक सदस्य मूल्य है कि एक अभिव्यक्ति ( प्रोग्रामिंग निर्माण कि दोनों डेटा बाइंडिंग और गतिशील संसाधनों का आधार) के रूप में संग्रहीत किया जाता है को हल करने की क्षमता द्वारा कार्यान्वित किया जाता FrameworkElement। अधिक जानकारी के लिए, डेटा बाध्यकारी अवलोकन और संसाधन अवलोकन देखें।
तर्क # 2.
ElementName
x:Name
को अंक है, तो यह नाम कुछ कैसे पाया जाना चाहिए। NameScope अवधारणा है।
सबसे परिदृश्यों के लिए, FindName FrameworkElement और FrameworkContentElement पर उजागर तरीकों को और अधिक उचित तरीकों नाम से तत्वों के लिए खोज करने के लिए कॉल करने के लिए कर रहे हैं।फ्रेमवर्क एलीमेंट और फ्रेमवर्ककंटेंट एलिमेंट द्वारा खुलासा गुण को प्रारंभिक नाम मार्कअप विशेषताओं के रूप में सेट करने के लिए उपयोग करने के लिए उपयुक्त गुण हैं। और RegisterName तरीकों FrameworkElement पर अवगत कराया और FrameworkContentElement एक विशिष्ट namescope में एक नाम की स्थापना के लिए आवश्यक है (वहाँ कोई NameScope सदस्य है कि इस सीधे कर सकते हैं, आप RegisterName उपयोग करने के लिए वर्तमान namescope पहले सेट करना होगा) ।
दूसरी ओर, Visual class न FindName
विधि है, और न ही INameScope लागू।
लॉजिकल-ट्री का इस्तेमाल किया गया। बाद में विवरण पोस्ट करेंगे। – alex2k8