2012-05-09 15 views
6

मैं निर्भरता गुण सीख रहा हूं। मैंने कई पोस्ट & किताबें पढ़ी लेकिन फिर भी मैं स्पष्ट नहीं हूं।निर्भरता संपत्ति त्रुटि

नीचे दिखाया गया कार्यक्रम वह है जिसे मैंने सीखने के लिए लिखा था। उसमें कुछ त्रुटि, कृपया हल करने में मदद करें। मेरे कुछ सवाल हैं।

  1. कस्टम निर्भरता संपत्ति तत्व का मुख्य उपयोग परिवर्तन की अधिसूचना के लिए है?
  2. मुझे एक WPF टेक्स्ट बुक में बटन के लिए 'IsDefaultProperty' कोड मिला। इसका मतलब है 'IsDefault' संपत्ति एक निर्भरता संपत्ति है?
  3. उन्होंने कोड क्यों दिखाया? इसका मतलब है, आंतरिक रूप से, बटन वर्ग में, इसकी परिभाषा इस तरह है? (उन्होंने आंतरिक कोड दिखाया?) या उन्होंने दिखाया कि कैसे कस्टम के रूप में परिभाषित किया जाए?

यहाँ मेरी कोड है:

namespace DependencyProperties 
{ 
    public class Contact 
    { 
     private int id=100; 
     private string name="shri"; 
     public static readonly DependencyProperty IsPresentProperty; 

     public int ID 
     { 
      get { return id; } 
     } 
     public string NAME 
     { 
      get { return name; } 
     } 

     static Contact() 
     { 
      IsPresentProperty = DependencyProperty.Register("IsPresent", typeof(bool),typeof(Contact),new FrameworkPropertyMetadata(false,new PropertyChangedCallback(OnIsPresentChanged))); 
     } 

     public bool Present 
     { 
      get { return (bool)GetValue(Contact.IsPresentProperty); } 
      set { SetValue(Contact.IsPresentProperty, value); } 
     } 

     private static void OnIsPresentChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) 
     { 

     } 
    } 
} 

और मैं त्रुटि देखें:

> Error: GetValue and SetValue does not exist in the current context 

उत्तर

14

The main use of custom Dependency property element is for the notification of change?

नहीं, यह भी व्यवस्था की जा सकती वर्ग INotifyPropertyChanged लागू रूप में अच्छी तरह होने से। परिवर्तन अधिसूचनाएं प्रदान करने के लिए निर्भरता गुण, लेकिन असली तर्क कुछ अलग है। Why dependency properties? और How is the WPF property system economical?

I found an 'IsDefaultProperty' code for Button in a WPF text book. It means 'IsDefault' property is a dependency property?

हाँ देखें। एक क्षेत्र का नामकरण "फूबारप्रोपर्टी" निर्भरता गुणों को परिभाषित करने के लिए डब्ल्यूपीएफ सम्मेलन है; आप यह देखने के लिए IsDefaultProperty के लिए दस्तावेज़ों की जांच कर सकते हैं कि यह वास्तव में एक निर्भरता संपत्ति है, और यहां तक ​​कि IsDefault दस्तावेज़ में "निर्भरता संपत्ति जानकारी" नामक एक अनुभाग है।

Why they shown that code? It means, internally, in Button class, its defined like that? (They showed internal code?) or they showed how to define as custom?

मैं यकीन है कि क्या "है कि" कोड है, लेकिन हाँ, संपत्ति लगभग निश्चित रूप से इस तरह Button में परिभाषित किया गया है नहीं हूं ("लगभग" क्योंकि मैं नहीं यकीन है कि क्या आप की बात कर रहे हूँ)।

Error: GetValue and SetValue does not exist in the current context

ऐसा इसलिए है क्योंकि आप DependencyObject से प्राप्त नहीं कर रहे हैं।

12

DependencyProperty उदाहरण DependencyObject के उदाहरणों पर परिभाषित किए जाने चाहिए। इसलिए, आपकी कक्षा DependencyObject, या इसके उप-वर्गों में से एक होनी चाहिए। डब्ल्यूपीएफ में कई प्रकार इस से निकलते हैं, जिसमें Button शामिल हैं।

तो पाने के लिए अपने कोड इस मामले में काम कर रहा है, तो आप का उपयोग करना चाहिए:

public class Contact : DependencyObject 
{ 
    // ... 

यही कारण है कि आप GetValue और SetValue पर एक त्रुटि प्राप्त कर रहे हैं - वे DependencyObject पर परिभाषित कर रहे हैं।

+0

धन्यवाद आवंटित। त्रुटि हल हो गई। – SHRI

+0

बहुत उपयोगी। इस उत्तर में अधिक वोट होना चाहिए। –

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