2011-05-31 17 views
20

.NET 4.0, Run.Text में बाध्यकारी है। इसलिए मैं यह बाध्य करने की कोशिश की:रन.क्स्ट डिफ़ॉल्ट रूप से दो-तरफा क्यों बांधता है?

<Run Text="{Binding DisplayText}"/> 

लेकिन जब मैं भाग गया, मैं एक त्रुटि मिली: "एक TwoWay या OneWayToSource बाध्यकारी केवल पढ़ने के लिए संपत्ति प्रकार के 'DisplayText' 'SomeNamespace.SomeClass' पर काम नहीं कर सकते।"

मेरी डिस्प्लेटेक्स्ट संपत्ति वास्तव में केवल पढ़ने के लिए थी, लेकिन टेक्स्ट रनॉक्स में रन-रन चलते हैं, जिन्हें आप संपादित नहीं कर सकते हैं। तो मुझे यह त्रुटि क्यों मिल रही है? मैं dotPeek और यकीन है कि पर्याप्त के साथ PresentationFramework में खोदे गए:

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register("Text", typeof (string), typeof (Run), 
    (PropertyMetadata) new FrameworkPropertyMetadata((object) string.Empty, 
     FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
     new PropertyChangedCallback(Run.OnTextPropertyChanged), 
     new CoerceValueCallback(Run.CoerceText))); 

चौथी लाइन, दिन के रूप में सादे, यह बताता है कि Run.Text दो तरह डिफ़ॉल्ट रूप से, जो कोई मतलब नहीं है और एक स्पष्ट डिजाइन बग की तरह लगता है के लिए बाध्य करना चाहिए।

<Run Text="{Binding DisplayText, Mode=OneWay}"/> 

लेकिन कारण है कि मैं उसके चारों ओर काम करने के लिए होना चाहिए:

बेशक

, यह पर्याप्त के आसपास काम करने के लिए आसान है? रन डिफ़ॉल्ट रूप से दो-तरफा क्यों बांधता है?

+0

महान प्रश्न। 6 साल बाद और नए डेवलपर्स अभी भी एक ही मुद्दे पर चल रहे हैं। जब तक मैं रनटाइम पर बाध्यकारी हिट नहीं करता तब तक मैं इसे अपने बारे में भी भूल जाता हूं! – josh2112

उत्तर

9

बस एक अनुमान यहाँ:

क्योंकि Run वस्तुओं भी RichTextBox नियंत्रण में किया जाता है यह हो सकता है, और मैं कल्पना कर सकते हैं इस पर नियंत्रण TwoWay डिफ़ॉल्ट रूप से बाध्य करने के लिए चाहते हो सकता है!

+1

यह गलत है। डॉक्स का कहना है कि रिचटेक्स्टबॉक्स में बाध्यकारी सक्षम नहीं है क्योंकि संपादन कार्यों के साथ बाध्यकारी को साफ़ करना बहुत आसान होगा। http://msdn.microsoft.com/en-us/library/system.windows.documents.run.text.aspx –

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