2010-04-18 11 views
51

मैं इसे बनाना चाहता हूं, डिफ़ॉल्ट रूप से, जब मैं अपनी निर्भरता गुणों में से किसी एक से जुड़ता हूं तो बाध्यकारी मोड दो-तरफा है और अपडेट-ट्रिगर संपत्ति बदल जाती है। क्या इसे करने का कोई तरीका है?क्या कस्टम निर्भरता प्रॉपर्टी के डिफ़ॉल्ट बाध्यकारी मोड को निर्दिष्ट करने और ट्रिगर अपडेट करने का कोई तरीका है?

new FrameworkPropertyMetadata 
{ 
    BindsTwoWayByDefault = true, 
    DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged 
} 

उत्तर

84

जब संपत्ति दर्ज की, साथ अपने मेटाडाटा को प्रारंभ:

यहाँ मेरी निर्भरता संपत्ति में से एक का एक उदाहरण है:

public static readonly DependencyProperty IsExpandedProperty = 
     DependencyProperty.Register("IsExpanded", typeof(bool), typeof(Dock), 
     new FrameworkPropertyMetadata(true, 
      FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
      OnIsExpandedChanged)); 

public bool IsExpanded 
{ 
    get { return (bool)GetValue(IsExpandedProperty); } 
    set { SetValue(IsExpandedProperty, value); } 
} 
+3

मैं अपने उदाहरण डीपी:में इसे जोड़कर BindsTwoWayByDefault सेट करने में सक्षम थानया फ्रेमवर्कप्रॉपर्टी मेटाडाटाटा (0, फ्रेमवर्कप्रॉपर्टीमैटाडाटाऑप्शन। बाइंड्सवोवोवेडडिफॉल्ट, ऑनबिंडेबल चयन स्टार्ट चेंज)। हालांकि, मुझे अभी भी UpdateSourceTrigger को PropertyChanged पर सेट करने में समस्या हो रही है। – Justin

+1

मैंने अपने उत्तर को संशोधित करने के लिए संशोधित किया कि यह ऑब्जेक्ट प्रारंभकर्ता के साथ कैसे करें। एक निर्माता के बजाय इसका प्रयोग करें। –

+0

आपकी मदद के लिए धन्यवाद डिएगो! – Justin

14

निर्भरता संपत्ति घोषणा में यह इस प्रकार दिखाई देगा में:

public static readonly DependencyProperty BindableSelectionLengthProperty = 
     DependencyProperty.Register(
     "BindableSelectionLength", 
     typeof(int), 
     typeof(ModdedTextBox), 
     new PropertyMetadata(OnBindableSelectionLengthChanged)); 
संबंधित मुद्दे

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