2011-01-21 13 views
7

बाइंडिंग मैं इस तरह एक कोड है:WPF मेरी क्षुधा में से एक में डिफ़ॉल्ट मोड

<ProgressBar Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" Height="27" Margin="5,0,5,0" Maximum="{Binding TabuProgressEnd}" Value="{Binding TabuProgress}" /> 

मैं परीक्षण किया गया था इस सब कुछ ठीक है, लेकिन जब मेरे मुवक्किल वी.एस. के तहत इस खोला और चलाने के लिए इस कोड को एक अपवाद फेंक दिया जबकि :

An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll 

Additional information: A TwoWay or OneWayToSource binding cannot work on the read-only property 'TabuProgress' of type 'TSPLib.TabuEngine'. 

आमतौर पर मुझे लगता है कि होगा इस झांसे में किसी तरह का है, लेकिन मैं जानता हूँ कि पुरुष कोडिंग और बनाने "मोड = Oneway" स्पष्ट मदद की के बारे में पता नहीं है। यह कैसे संभव है कि डिफ़ॉल्ट बाध्यकारी मोड विभिन्न मशीनों पर अलग हो?

+0

इस ढांचे के साथ एक संस्करण मुद्दे की तरह लगता है पर की तरह दिखता है दिलचस्प होगा। मुझे यकीन नहीं है कि डिफ़ॉल्ट बाध्यकारी मोड बदल गया था, लेकिन यह सर्विस पैक (या हॉटफिक्स) में से एक में हो सकता था। ऐसा लगता है कि पिछले कुछ सालों में इन अजीब बदलावों में से कुछ रहे हैं, और उन्हें ट्रैक रखना मुश्किल है। आप किस संस्करण को लक्षित कर रहे हैं? –

+0

विजुअल स्टूडियो 2010 के साथ स्थापित नेट फ्रेमवर्क 4.0. मुझे यकीन नहीं है, लेकिन यह कुछ नया हो सकता है, क्योंकि मेरे क्लाइंट ने दो दिन पहले वीएस प्रो परीक्षण संस्करण स्थापित किया था। शायद यह SP1 के साथ है .. – kubal5003

उत्तर

4

ProgressBar में Value संपत्ति डिफ़ॉल्ट रूप से TwoWay बांधता है तो अपवाद घटित होता है तो जब तक आप स्पष्ट OneWay को Mode निर्धारित किया है। हालांकि मैं यह नहीं समझा सकता कि यह आपकी मशीन पर क्यों नहीं होता है। मैंने .NET संस्करण 4.0, 3.5 और 3.0 के साथ परावर्तक का उपयोग करने की कोशिश की और जहां तक ​​मैं कह सकता हूं, डिफ़ॉल्ट बाध्यकारी मोड कुछ समय में नहीं बदला है।

आप परावर्तक स्थापित किया है, यह देखने के लिए कि क्या ValueProperty (RangeBase से विरासत में मिली) अपने मशीन

public static readonly DependencyProperty ValueProperty = 
    DependencyProperty.Register(
     "Value", 
     typeof(double), 
     typeof(RangeBase), 
     new FrameworkPropertyMetadata(
      0.0, 
      FrameworkPropertyMetadataOptions.Journal | 
      FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
      new PropertyChangedCallback(RangeBase.OnValueChanged), 
      new CoerceValueCallback(RangeBase.ConstrainToRange)), 
     new ValidateValueCallback(RangeBase.IsValidDoubleValue)); 
+0

आपके उत्तर के लिए धन्यवाद। सबसे पहले मैंने सीखा है कि डिफ़ॉल्ट बाध्यकारी मोड डीपी मेटाडेटा में सेट किया जा सकता है - मैं भविष्य में इसके बारे में निश्चित रूप से अधिक सावधान रहूंगा। मैंने अपने ढांचे पर उपरोक्त कोड की जांच की है और इसमें BindsTwoWayByDefault भी शामिल है। यह अजीब है.. – kubal5003

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