WPF खुद को बांधें


86

मुझे एक WPF मिला है Window, और कहीं न कहीं एक है ListViewजहाँ मैं एक List<string>को बांधता हूं ।

अब कहीं मेरे ListViewमें एक है TextBoxऔर Contentसंपत्ति के लिए सेट है {Binding}

लेकिन यह आशुलिपि है। मैं स्वयं को बांधने के लिए पूर्ण बंधन कैसे लिखूं?

{Binding Path=Self}काम नहीं करता है, न ही करता है {Binding Self}(जहां बाद वाले पूर्व के लिए एक शॉर्टकट है)।


मैं इस विषय से संबंधित एक पोस्ट का उल्लेख करना चाहता हूं। उपरोक्त उत्तर पूरी तरह से सही है लेकिन एक बिंदु है जो उपरोक्त उत्तर को पूरा करता है। यहाँ लिंक है
अली फतहियां

जवाबों:


247

संक्षिप्त उत्तर : {Binding}है नहीं "खुद के लिए बाध्य" (के अर्थ में के लिए एक शॉर्टकट RelativeSource.Self )। बल्कि, इसके {Binding} बराबर है {Binding Path=.} , जो वर्तमान स्रोत से बांधता है।


विस्तृत करने के लिए : एक बंधन का एक स्रोत और एक रास्ता है । आप "स्वयं के लिए बाध्यकारी" कर सकते हैं, उदाहरण के लिए, उपयोग करके

<myUIControl myProperty="{Binding RelativeSource={RelativeSource Self}, Path=x}" />

यह, हालांकि, स्रोत को स्वयं नियंत्रण में सेट करता है, इसलिए यह xUI नियंत्रण की संपत्ति ( xवर्तमान डेटा की संपत्ति के बजाय) तक पहुंचने की कोशिश करेगा । मैंने आपके प्रश्न को कैसे समझा, यह वह नहीं है जो आप चाहते हैं; विशेष रूप से, यह नहीं है कि क्या {Binding}करता है: {Binding}स्रोत को बनाए रखता है जैसा कि यह (आमतौर पर DataContextकुछ मूल तत्व है) और स्रोत को ही (बराबर Path=.) बांधता है ।


मेरे पास एक DataGrid है जहां अगर उपयोगकर्ता अपने ContextMenu के MenuItem के कमांड में से एक का उपयोग इनपुटबाइंडिंग की कीबाइंडिंग के माध्यम से करता है CommandParameter="{Binding ElementName=MyDataGrid, Path=SelectedItems}", तो वह SelectItems को बाउंड ICommand को पास करेगा। हालाँकि, nullयदि यह ContextMenu के माध्यम से पहुँचा जाता है तो पारित कर दिया गया है। मैंने "{बाइंडिंग सेलेक्ट इटम्स CommandParameter=}" की कोशिश की है । { , "बाइंडिंग एलिमेंटनेम = मायडेटाग्रीड, पाथ = सेलेक्टइम्स}" `और "{Binding RelativeSource={RelativeSource Self}, Path=SelectedItems}"
टॉम

@Tom: यह एक टिप्पणी में जवाब देना मुश्किल है। कृपया एक नया प्रश्न बनाएं और एक न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण प्रदान करें ।
हेनजी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.