2010-08-27 17 views
5

मेरा लक्ष्य XAML में यह लिखने के लिए सक्षम होने के लिए है:सिल्वरलाइट में संलग्न निर्भरता संपत्ति पर टाइप कनवर्टर कैसे सेट करें?

<Grid> 
    <Rectangle Fill="AliceBlue" 
      myCore:MyTimePanel.BeginningDate="03/03/2010" 
      /> 
</Grid> 

समस्या: सिल्वरलाइट XAML एक स्ट्रिंग से दिनांक समय पार्स नहीं कर सकता। तो रनटाइम पर मेरे पास XamlParseException है "उस स्ट्रिंग से डेटटाइम नहीं बना सकता"।

जब मैं एक साधारण निर्भरता प्रॉपर्टी का उपयोग करता हूं, तो मैं बस गेटर/सेटर पर एक टाइप कनवर्टर एट्रिब्यूट जोड़ता हूं और यह काम करता है। इस (here से विचार) की तरह:

[TypeConverter(typeof(DateTimeTypeConverter))] 
public DateTime MyDate 
{ 
    get { return (DateTime)GetValue(MyDateProperty); } 
    set { SetValue(MyDateProperty, value); } 
} 

लेकिन एक संलग्न डी पी के साथ, वहाँ कोई गेटर/सेटर है। XAML में स्ट्रिंग दिनांक लिखने में सक्षम होने के लिए मैं क्या कर सकता हूं?

धन्यवाद!

उत्तर

5

लेकिन संलग्न संपत्तियों में एक एक्सेस प्राप्तकर्ता है - क्या आपने putting the type converter on the Get accessor को आजमाया है?

संस्करण-विशिष्ट लिंक के बारे में क्षमा करें, यह वह है जिसमें प्रासंगिक जानकारी शामिल है। उस पृष्ठ से:

3। आप उस प्रकार के प्रकार के प्रकार प्रकार को कनवर्टर कर सकते हैं जो मान प्रकार के रूप में कार्य करता है। यह प्रकार के सभी मानों के स्ट्रिंग रूपांतरण को सक्षम बनाता है। अधिक जानकारी के लिए, TypeConverters और XAML देखें।

4। आप गेट एक्सेसर विधि पर एक प्रॉपर्टी लेवल टाइप कनवर्टर विशेषता दे सकते हैं। यह संलग्न संपत्ति के स्ट्रिंग रूपांतरण को सक्षम बनाता है। सेट एक्सेसर विधि के बजाय एक्सेस एक्सेसर विधि में TypeConverterAttribute को लागू करना गैर-अनुज्ञानात्मक प्रतीत हो सकता है, लेकिन यही वह जगह है जहां XAML प्रोसेसर संलग्न संपत्ति के लिए प्रकार रूपांतरण जानकारी (यदि कोई हैं) ढूंढने की अपेक्षा करते हैं। अधिक जानकारी के लिए, TypeConverters और XAML देखें।

+0

आप बिल्कुल सही हैं, धन्यवाद! मैं सीएलआर संपत्ति (माइप्रॉप {get; set;}) पर केंद्रित था, लेकिन संलग्न डीपी के मामले में, एक्सेसर्स संपत्ति के बजाय स्थैतिक विधियां हैं। – JYL

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

  • कोई संबंधित समस्या नहीं^_^