2009-07-07 6 views
24

को परिभाषित करें WPF में, मैं टेम्पलेट करने में सक्षम होना चाहता हूं कि डिफ़ॉल्ट रूप से मेरे बाइंडिंग कैसे लागू होते हैं।डब्ल्यूपीएफ: बाध्यकारी के डिफ़ॉल्ट

उदाहरण के लिए, मैं लिखना चाहते हैं:

Text="{Binding Path=PedigreeName}" 

लेकिन जैसे मैं आपके द्वारा लिखा गया था कि यह होगा:

Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 

किसी भी विचार?

धन्यवाद,

  • पैट्रिक

उत्तर

16

जो व्हाइट के अच्छे उत्तर के अलावा, आप बाध्यकारी से प्राप्त एक वर्ग भी बना सकते हैं और आपको आवश्यक डिफ़ॉल्ट संपत्ति मान सेट कर सकते हैं। उदाहरण के लिए:

public class TwoWayBinding : Binding 
{ 
    public TwoWayBinding() 
    { 
     Initialize(); 
    } 

    public TwoWayBinding(string path) 
     : base(path) 
    { 
     Initialize(); 
    } 

    private void Initialize() 
    { 
     this.Mode = BindingMode.TwoWay; 
    } 
} 
+0

धन्यवाद, मैं इसे इस तरह कार्यान्वित करना समाप्त कर दिया। [कोड] सार्वजनिक वर्ग सत्यापन बाध्यकारी: बाध्यकारी { सार्वजनिक सत्यापन बाध्यकारी() { प्रारंभ(); } सार्वजनिक सत्यापन बाध्यकारी (स्ट्रिंग पथ) : आधार (पथ) { प्रारंभ(); } निजी शून्य प्रारंभ करें() { मोड = बाइंडिंग मोड। दोवे; UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; NotifyOnValidationError = true; मान्यताऑनडाटाइरर्स = सत्य; मान्यताओंऑनएक्सप्शन = सत्य; } } [/ कोड] – PBelanger

+0

क्या यह सिल्वरलाइट 3+ में भी काम करता है? –

+0

एक एक्सएएमएल उपयोग उदाहरण बहुत अच्छा होगा - कोई भी नहीं मिल सकता है ... – vines

25

उपयोग DependencyProperty.Register के भार के कि एक PropertyMetadata लेने में से एक। FrameworkPropertyMetadata का एक उदाहरण पास करें और इसकी गुण सेट करें।

public class Dog { 
    public static readonly DependencyProperty PedigreeNameProperty = 
     DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog), 
      new FrameworkPropertyMetadata() { 
       BindsTwoWayByDefault = true, 
       DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus 
      } 
     ); 

मैं नहीं बेतकल्लुफ़ NotifyOnValidationError, ValidatesOnDataErrors, या ValidatesOnExceptions के लिए डिफ़ॉल्ट सेट के लिए एक रास्ता देखते हैं, लेकिन मैं यह पर्याप्त उपयोग नहीं किया है देखने के लिए क्या सुनिश्चित करने के लिए; वे वहां हो सकते हैं।

+0

धन्यवाद, अच्छा विचार है, लेकिन मेरे मामले में, डॉग क्लास एक व्यावसायिक मॉडल प्रोजेक्ट में है। मैं इस परियोजना के लिए System.Windows पर निर्भरता नहीं जोड़ना चाहता हूं। जिस समाधान को मैं देख रहा था वह उस दिशा में था, App.xaml में, लेकिन मिलान ... धन्यवाद फिर से कुछ भी नहीं मिला है! – PBelanger