2009-09-07 10 views
8

यहां एक छोटा एक्सएएमएल खंड है। आपवनवे मोड में डेटा बाइंडिंग ब्रेक क्यों करता है?

<StackPanel> 
    <TextBox x:Name="txtValue">250</TextBox> 
    <Slider x:Name="slide" 
      Value="{Binding ElementName=txtValue, Path=Text, 
          Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" 
      Minimum="0" Maximum="500"></Slider> 
</StackPanel> 
  1. स्लाइडर अपडेट
  2. देख पाएंगे कि आपने पाठ बॉक्स मान बदलने, आप स्पष्ट रूप से स्लाइडर मूल्य बदलते हैं, तो पिछले व्यवहार भी कहा जाता है काम कर बंद हो जाता है टूट जाता है।

यदि मैं Mode=OneWay निर्देश निर्देश सेट करता हूं, (दो तरफ से डिफ़ॉल्ट) सब कुछ पूरी तरह से काम करता है।

ऐसा क्यों हो रहा है?

उत्तर

3

आपका डाटा बंधन टूट गया है नहीं, लेकिन निष्क्रिय (http://en.wikipedia.org/wiki/Euphemism):

System.Windows.Data Warning: 75 : BindingExpression (hash=52697953): Deactivate 
System.Windows.Data Warning: 99 : BindingExpression (hash=52697953): Replace item at level 0 with {NullDataItem} 
System.Windows.Data Warning: 59 : BindingExpression (hash=52697953): Detach 

उच्च स्तर का पता लगाने की स्थापना के मामले में वी.एस. उत्पादन विंडो में इस संदेश का उत्पादन करेगा आप स्लाइडर:

<Slider xmlns:trace="clr-namespace:System.Diagnostics;assembly=WindowsBase" 
     Value="{Binding trace:PresentationTraceSources.TraceLevel=High, 
      ElementName=txtValue, Path=Text, Mode=OneWay, 
      UpdateSourceTrigger=PropertyChanged}" 
     Minimum="0" Maximum="500"></Slider> 
+5

यह क्यों अलग करता है? बाध्यकारी नियंत्रण पर अंगूठे को स्थानांतरित करने जैसे कुछ करने से बाध्यकारी को निष्क्रिय या अनदेखा करते हैं, तो यह एक तरह से बाध्यकारी के उद्देश्य को हरा देता है। टूटे हुए, मेरा मतलब था कि अपेक्षित व्यवहार अब और नहीं देखा गया है। – Gishu

+0

जिस तरह से इसे लागू किया गया है :-( यदि यह आपकी आवश्यकताओं को पूरा नहीं करता है तो WPF डेटा बाध्यकारी का उपयोग न करें। –

12

mode=TwoWay का उपयोग करें और UpdateSourceTrigger=Explicit सेट करें।

+7

यह काम करता है ... लेकिन किसी भी कारण की व्याख्या नहीं करता है। – Beska

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