2015-09-29 4 views
6

पारंपरिक {बाइंडिंग} वाक्यविन्यास का उपयोग करते समय आप पृष्ठ पर किसी विशिष्ट नियंत्रण को इंगित करने के लिए तत्व नाम निर्दिष्ट कर सकते हैं और इसकी गुणों तक पहुंचने में सक्षम हो सकते हैं। अगर पेज के नाम पर है उदाहरण के लिए page तुम कर सकते हो:एक्स में एलिमेंटनाम के लिए वैकल्पिक: डेटा टेम्पलेट्स के साथ बाध्य

{Binding ElementName=Page, Path=Name} 

{x:Bind} वाक्य रचना के साथ यह कहते

एक्स के साथ

: बाइंड, आप ElementName उपयोग करने के लिए की जरूरत नहीं है = xxx के हिस्से के रूप बाध्यकारी अभिव्यक्ति। एक्स: बाइंड के साथ, आप बाध्यकारी के पथ के पहले भाग के रूप में तत्व के नाम का उपयोग कर सकते हैं क्योंकि नामित तत्व पृष्ठ या उपयोगकर्ता नियंत्रण के अंतर्गत फ़ील्ड बन जाते हैं जो रूट बाध्यकारी स्रोत का प्रतिनिधित्व करते हैं।

तो में ऊपर के उदाहरण के लिए {x: बाइंड},

{x:Bind page.Name} 

कौन सा ठीक काम करता है हो सकता है, जब तक यह एक डेटा टेम्पलेट (उदाहरण के लिए एक ListView के ItemTemplate) के अंदर है। जो मामले में यह अब काम करता है के रूप में यह Page निर्दिष्ट डेटा प्रकार है जो निम्न त्रुटि की ओर जाता है पर की तलाश में है (मेरे डेटा प्रकार customer संभालने है):

XamlCompiler त्रुटि WMC1110: अमान्य बाध्यकारी पथ 'Page.Name ': संपत्ति': datatemplates और डेटा टेम्पलेट के बाहर पहुँच नियंत्रण के साथ वाक्य रचना पृष्ठ ग्राहक '

समाधान {बाइंड x} उपयोग करने के लिए क्या है' प्रकार पर नहीं पाया जा सकता?

उदाहरण कोड उपलब्ध है here जहाँ तक मुझे पता के रूप में (विशेष ध्यान दें प्रतिबद्ध)

उत्तर

9

समय में इस बिंदु पर कोई रास्ता नहीं सीधे एक्स का उपयोग कर एक नियंत्रण के एक संपत्ति के लिए बाध्य करने के लिए है: बाँध विधि के रूप में यह होता है तत्व बाध्यकारी परिभाषा के अंदर तत्व का समर्थन नहीं करते हैं।

इसका मतलब यह नहीं है कि आप किसी डेटा के अंदर नियंत्रण में बाध्य नहीं हो सकते हैं। आप अभी भी नियंत्रणों तक पहुंचने के लिए ऐसा कुछ कर सकते हैं लेकिन आप संकलित बाध्यकारी x: बाइंड सिंटैक्स का उपयोग करने में सक्षम नहीं हैं।

<DataTemplate x:DataType="local:Customer"> 
    <StackPanel Orientation="Vertical"> 
     <Button Content="{Binding Name, ElementName=page}" /> 
     <TextBlock Text="{x:Bind Title}" /> 
    </StackPanel>   
</DataTemplate> 

त्रुटि मिल रहा है के लिए कारण जिस तरह से डेटा टेम्पलेट्स अभिभावक अपने डेटा स्रोत के कारण है। एक्स: बाइंड बाइंडिंग एक नियंत्रण ऑब्जेक्ट का संदर्भ नहीं दे सकता है और आपका ग्राहक प्रकार पृष्ठ नाम या संपत्ति करता है। जैसा कि आपके नियंत्रण के बाहर उपयोगकर्ता नियंत्रण गुणों तक पहुंचने का एकमात्र असली तरीका है, केवल एक्सएएमएल का उपयोग करके मानक बाध्यकारी तंत्र का सहारा लेना है।

मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा।

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