के लिए प्रॉक्सी बनाएं मैं एक साधारण निर्भरता संपत्ति प्रॉक्सी बनाने की कोशिश कर रहा हूं। मैंने कस्टम नियंत्रण किया है, यह एक फ़ाइल पिकर है, जो एक टेक्स्टबॉक्स से बना है (नाम: "TextBox_FilePath"
) और एक बटन खुली फ़ाइल संवाद दिखा रहा है।एक निर्भरता संपत्ति
जैसा कि मैं एक पुन: प्रयोज्य नियंत्रण कर रहा हूं, मुझे यह "SelectedFilePath"
संपत्ति चाहिए। Text
संपत्ति "SelectedFilePath"
संपत्ति होने के लिए मेरे नियंत्रण के लिए बिल्कुल सही प्रतीत होती है, इसलिए मैं इन निर्भरता संपत्ति को प्रॉक्सी करना चाहता हूं।
पहले दृष्टिकोण मैंने बनाया था:
public static readonly DependencyProperty SelectedFilePathProperty = TextBox.TextProperty;
public string SelectedFilePath
{
get { return (string) this.TextBox_FilePath.GetValue(SelectedFilePathProperty); }
set { this.TextBox_FilePath.SetValue(SelectedFilePathProperty, value); }
}
जो काम किया, लेकिन एक अपवाद जब कि संपत्ति के लिए बाध्य करने की कोशिश कर throwed। फिर मैं इसके साथ आया:
public static readonly DependencyProperty SelectedFilePathProperty =
DependencyProperty.Register("SelectedFilePath", typeof (string), typeof (FilePicker), new PropertyMetadata(default(string)));
public string SelectedFilePath
{
get { return (string) this.TextBox_FilePath.GetValue(SelectedFilePathProperty); }
set { this.TextBox_FilePath.SetValue(SelectedFilePathProperty, value); }
}
जो काम करता है, लेकिन मुझे नहीं पता कि क्यों ?! मैंने कहां निर्दिष्ट किया था कि मैं text
टेक्स्टबॉक्स की संपत्ति चाहता था?
उस निर्भरता संपत्ति को आसानी से प्रॉक्सी करने के लिए मुझे क्या याद आ रही है?
संपादित करें: AddOwner
साथ समाधान भी काम नहीं करता है, फेंक देता है एक Excetion कह "बाइंडिंग केवल एक निर्भरता संपत्ति पर लागू किया जा सकता"। कोड:
public static readonly DependencyProperty SelectedFilePathProperty =
TextBox.TextProperty.AddOwner(typeof(FilePicker));
public string SelectedFilePath
{
get { return (string)this.TextBox_FilePath.GetValue(SelectedFilePathProperty); }
set { this.TextBox_FilePath.SetValue(SelectedFilePathProperty, value); }
}
मुझे क्या समझ में नहीं आता?
EDIT2: हर कोई मुद्दों जवाब को समझने और कुछ होने के लिए, मैं कर दिया है a little graphic
देखने के लिए कृपया मेरे संपादन :) – GameScripting
* के रूप में मैंने कहा *, यह नाम "पाठ" के साथ पंजीकृत है, तो आप इसलिए केवल एक संपत्ति बुलाया करने के लिए बाध्य कर सकते हैं 'टेक्स्ट', आपके द्वारा बनाई गई' चुनी गई FilePath' प्रॉपर्टी केवल आपके अनिवार्य कोड में सुविधा के लिए एक रैपर है, बाइंडिंग इसका कभी भी उपयोग नहीं करती है। यदि आप एक अलग नाम चाहते हैं तो अपनी खुद की संपत्ति पंजीकृत करें। –
क्या आप बहुत दयालु हो सकते हैं और एक उदाहरण प्रदान कर सकते हैं या ऐसा करने के बारे में कोई संदर्भ दे सकते हैं? – GameScripting