2009-04-29 14 views
7

में कस्टम निर्भरता गुण और दोवे बाध्यकारी हमारे पास एक ऑब्जेक्ट है जो निर्भरता ऑब्जेक्ट से प्राप्त होता है, और कुछ निर्भरता प्रवर्तन लागू करता है।डब्ल्यूपीएफ

मूल रूप से कुछ इस तरह:

class Context : DependencyObject { 
    public static readonly DependencyProperty NameProperty = 
    DependencyProperty.Register ("Name", typeof (string), typeof (Context), new PropertyMetadata ("")); 
    public string Name { 
     get { 
      return (string)this.GetValue (NameProperty); 
     } 
     set { 
      this.SetValue (NameProperty, value); 
     } 
    } 
} 

यह काम करता है, संपत्ति सेटअप है, बाध्य किया जा सकता है, आदि मुद्दा आता है जब मैं WPF से प्रॉपर्टी के लिए बाध्य, एक TwoWay बाँध का उपयोग कर। दोवे भाग वास्तव में कभी नहीं होता है, डब्ल्यूपीएफ कभी भी इस संपत्ति के सेट को नहीं बुलाता है। मैं अपने इस तरह बंधन स्थापित किया है:

<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 

इस मामले में, पाठ बॉक्स तुरंत नाम संपत्ति अद्यतन करना चाहिए में टाइप है, लेकिन ऐसा नहीं है। यदि मैं नाम संपत्ति को एक नियमित पीओसीओ संपत्ति के रूप में बदलता हूं, तो यह काम करता है (हालांकि दोवे के दूसरी तरफ स्पष्ट रूप से तब तक नहीं होता जब तक कि मैं इनोटिफ़ाईप्रॉपर्टी को लागू नहीं करता)।

मैं यहाँ क्या गलत कर रहा हूं? यह करने के लिए वास्तव में एक साधारण बात होनी चाहिए, लेकिन यह मुझे सिरदर्द का कोई अंत नहीं कर रहा है।

उत्तर

11

यह व्यवहार की उम्मीद है। सीएलआर संपत्ति अंतर्निहित DependencyProperty के आस-पास केवल एक रैपर है। डब्ल्यूपीएफ अक्सर GetValue और SetValue पर कॉल करके अनुकूलित करता है। यदि आपको निष्पादित करने के लिए कस्टम तर्क की आवश्यकता है तो DependencyProperty के मेटाडेटा का उपयोग करें।

+0

गीज़, मैं मूर्ख हूं। आप 100% सही हैं, मूल्य स्वयं सही ढंग से सेट किया गया है, लेकिन सेटटर कभी नहीं कहा जाता है, जो मेरे माध्यम से बंद है। धन्यवाद। –

2

के बाद इस मुद्दे पर मुझे कुछ समय खर्च:

की विरासत का समर्थन करने के लिए:

आप में से जो लोग एक ही समस्या है के लिए, लेकिन - - मेरे जैसे ऊपर जवाब में समाधान नहीं दिख रहा है डेटाकॉन्टेक्स्ट, कस्टम क्लास (इस मामले में संदर्भ) फ्रेमवर्क एलिमेंट से निर्भरता ऑब्जेक्ट के बजाय व्युत्पन्न किया जाना है। बस इतना ही।

मार्क