2009-07-22 9 views
7

जब मैं डिफ़ॉल्ट मान प्रदान करता हूं तो एक निर्भरता-संपत्ति कार्यान्वयन मेरे एप्लिकेशन को क्रैश क्यों करेगा?जब मैं एक डिफ़ॉल्ट मूल्य प्रदान करता हूं तो निर्भरता-संपत्ति कार्यान्वयन मेरे आवेदन को क्रैश क्यों करेगा?

कोड का यह खंड मेरी UserControl ऑब्जेक्ट के लिए कक्षा घोषणा में है। सबकुछ ठीक काम करता है - यह संकलित करता है और पूरी तरह से चलता है।

public static System.Windows.DependencyProperty DepProp 
    = System.Windows.DependencyProperty.Register( "Rect", 
                typeof(System.Windows.Shapes.Rectangle), 
                typeof(FooControl)); 
public System.Windows.Shapes.Rectangle Rect 
{ 
    get 
    { return ((System.Windows.Shapes.Rectangle)(GetValue(DepProp))); } 
    set 
    { SetValue(DepProp, value); } 
} 

हालांकि, जब मैं निर्भरता संपत्ति के लिए डिफ़ॉल्ट मान जोड़ें:
कोड को संकलित करता है, लेकिन यह UserControl का दृष्टांत की कोशिश करता है जब एक घातक अपवाद के साथ दुर्घटनाओं।

संदर्भ के लिए, मेरे कोड अब इस तरह दिखता है - PropertyMetaData लाइन के साथ कहा:

public static System.Windows.DependencyProperty DepProp 
    = System.Windows.DependencyProperty.Register( "Rect", 
                typeof(System.Windows.Shapes.Rectangle), 
                typeof(FooControl), 
                new System.Windows.PropertyMetadata(new System.Windows.Shapes.Rectangle())); 
public System.Windows.Shapes.Rectangle Rect 
{ 
    get 
    { return ((System.Windows.Shapes.Rectangle)(GetValue(DepProp))); } 
    set 
    { SetValue(DepProp, value); } 
} 

कॉल से PropertyMetadata निकाला जा रहा है() रजिस्टर करने के लिए पूरी तरह से कार्य करने के लिए कार्यक्रम का कारण बनता है किसी भी दुर्घटनाओं या किसी अन्य के बिना, समस्या का। लेकिन मुझे बाद के कोड के लिए डिफ़ॉल्ट मान की आवश्यकता है। क्रैश किए बिना डिफ़ॉल्ट मान को स्वीकार करने के लिए मैं इसे कैसे प्राप्त कर सकता हूं?

जब यह दुर्घटनाओं निम्नलिखित अपवादों के उत्पादन विंडो में दिखाए गए हैं:

A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll 
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll 
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll 

मैं इस यथाशीघ्र काम कर पाने के लिए है, इसलिए किसी भी सलाह भयानक होगा की जरूरत है!

+0

यदि आपके पास स्टैक ट्रेस था, तो यह बेहद सहायक होगा। –

+0

वास्तव में? मुझे नहीं पता था कि संबंधित था। लेमे देखें कि मैं किसके साथ आ सकता हूं ... मैं थोड़ी देर के लिए इसके आसपास नहीं पहुंच सकता - कुछ दबाकर व्यस्त। – Giffyguy

उत्तर

17

लघु जवाब:

निर्भरता संपत्ति मूलभूत मूल्यों धागा सुरक्षित (जैसे System.Windows.Freezable से विरासत), लेकिन System.Windows.Forms.Rectangle नहीं है की जरूरत है।

लांग जवाब:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/2cb12481-ef86-40b7-8333-443598d89933/

सुझाव:

आप दृश्य स्टूडियो यह वास्तव में हर अपवाद पर आईडीई तोड़ फेंके जाने के लिए मदद करता है उपयोग कर रहे हैं। बस "डीबग" -> "अपवाद" पर जाएं और "सामान्य भाषा रनटाइम अपवाद" "फेंक दिया" देखें।

फिर आपको संकेत दिया जाएगा और अपवाद संदेश प्राप्त होगा जो आपके मामले में ऐसा दिखता है: "अतिरिक्त जानकारी: 'Rect' संपत्ति के लिए डिफ़ॉल्ट मान किसी विशिष्ट थ्रेड से बाध्य नहीं किया जा सकता है।"

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

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