2010-10-06 11 views
31

मैं उस लड़के द्वारा लिखी गई एक स्पष्ट रूप से रात्रिभोज परियोजना को उजागर करके डब्ल्यूपीएफ सीखने का प्रयास कर रहा हूं जो मेरे सामने इस नौकरी में था। क्षमा करें अगर मेरे कुछ प्रश्न बहुत ज्यादा होमवर्क-स्तर हैं, लेकिन मैं इस बात की कोशिश कर रहा हूं कि मौजूदा एक्सएएमएल क्या करता है, इसके पीछे की अवधारणाओं की अपर्याप्त समझ के साथ ...'आइटमसोर्स = "{बाध्यकारी}" का क्या अर्थ है?

वैसे भी, मेरे पास इसके साथ एक सूची दृश्य है इसकी परिभाषा का हिस्सा:

<ListView 
    DataContext="{StaticResource XMLFileGroups}" 
    ItemContainerStyle="{StaticResource XMLItemStyle}" 
    ItemsSource="{Binding}"> 

अब, मैं एक तरह से चारों ओर क्या "DataContext" और "ItemContainerStyle" लाइनों कर रहे हैं मेरे सिर प्राप्त कर सकते हैं; वे मौजूदा सूची को क्रमबद्ध करने की विधि और क्रमशः ListView के कुछ दृश्य व्यवहार को परिभाषित करने वाली एक संरचना का संदर्भ दे रहे हैं।

मुझे क्या बर्बाद कर रहा है यह तथ्य है कि आइटमसोर्स को "{बाइंडिंग}" के रूप में सूचीबद्ध किया गया है। जो कुछ मुझसे कहता है वह यह है कि जगह पर कुछ प्रकार का डाटाबेसिंग है, लेकिन मुझे समझ में नहीं आता कि रेखा संभवतः सार्थक कैसे हो सकती है और फिर भी इसे हटाने से किसी भी डेटा को प्रदर्शित होने से रोक दिया जाता है।

क्या कोई यहां क्या हो रहा है, या मुझे वास्तविक बाध्यकारी परिभाषा को देखने के लिए कुछ प्रकाश डाला जा सकता है? मैं समझ नहीं पा रहा हूं कि मैं क्या देख रहा हूं।

उत्तर

30

पथ के बिना, {Binding}DataContext से ही जुड़ा होगा।
पथ जोड़ना डेटाैकेंटेक्स्ट की एक संपत्ति से जुड़ा होगा।

+0

तो "{बाइंडिंग}" विशेष रूप से ListView की DataContext प्रॉपर्टी द्वारा बनाए गए संग्रह पर वापस लिंक करता है? क्या यह ऐसा कुछ है जो आमतौर पर व्यू-टाइप ऑब्जेक्ट्स के लिए होता है या यह ListView के लिए विशिष्ट है? अधिक जानकारी के लिए भीख मांगने के लिए माफ़ी, लेकिन मुझे यकीन है कि आप सराहना कर सकते हैं कि 'आइटम्ससोर्स =' {बाइंडिंग} '' की तलाश में मुझे कई नतीजे मिलने के लिए एक संकीर्ण पर्याप्त खोज नहीं है, इसलिए मैं इस प्रश्न को पहले पूछ रहा हूं जगह ... – Frosty840

+0

मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। '{बाइंडिंग} 'का उपयोग किसी भी संदर्भ में किया जा सकता है जहां आप जिस मूल्य को बांधना चाहते हैं वह' डेटाकॉन्टेक्स्ट 'है। यह डेटासोर्स को बांधने के लिए अक्सर उपयोग किया जाता है। – SLaks

+0

मैंने सोचा कि यह मामला था, लेकिन मैं वास्तव में सुनिश्चित नहीं हो सका। स्पष्टीकरण के लिए धन्यवाद। – Frosty840

6

वह उदाहरण निर्दिष्ट करता है कि बाइंडिंग डेटाकॉन्टेक्स्ट है।

 MyList.ItemsSource = new Binding() {ElementName = "YourBindingField", Source = YourStaticDataSource}; 

आशा है कि

मदद करता है:

ItemsSource="{Binding YourBindingField, Source={StaticResource YourStaticDataSource}}" 

जो पीछे कोड में यह करने के लिए अनुवाद होगा: कोड में एक ही बात के पीछे

MyList.ItemsSource = new Binding(); 

तुम भी तरह सामान कर सकते हैं हो सकता है

+1

क्षमा करें, मैं यह उल्लेख करने में असफल रहा कि मैं जो काम कर रहा हूं वह है (सिद्धांत रूप में) एक एमवीवीएम प्रोजेक्ट, इसलिए कोई कोड-पीछे नहीं है। जबकि मुझे यकीन है कि आप जो कहते हैं वह सही है, मेरे पास इसका कोई संदर्भ नहीं है जिसमें इसे समझना है। – Frosty840

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