2011-08-16 19 views
6

मैं XAML में एक पूर्णांक या डबल मूल्य की घोषणा करने में सक्षम हूँ। हालांकि, मैं दशमलव मान नहीं जोड़ सकता। यह ठीक बनाता है, लेकिन फिर मैं मिलता है:एक्सएएमएल में दशमलव मान कैसे घोषित करें?

System.Windows.Markup.XamlParseException: प्रकार 'दशमलव' नहीं मिला था।

<UserControl.Resources> 
    <system:Int32 x:Key="AnIntValue">1000</system:Int32><!--Works!--> 
    <system:Double x:Key="ADoubleValue">1000.0</system:Double><!--Works!--> 
    <system:Decimal x:Key="ADecimalValue">1000.0</system:Decimal><!--Fails at runtime--> 
</UserControl.Resources> 

यहाँ कैसे मैं प्रणाली नाम स्थान की घोषणा कर रहा हूँ है::

यहाँ XAML कोड है

xmlns:system="clr-namespace:System;assembly=mscorlib" 

संपादित करें: युक्ति: स्टीवन उल्लेख किया है, के माध्यम से संसाधन जोड़ने कोड-पीछे ठीक से काम करने लगता है:

Resources.Add("ADecimalValue", new Decimal(1000.0)); 

संपादित करें: उत्तर: डब्ल्यूपीएफ में बिल्कुल वही काम करना ठीक काम करता प्रतीत होता है। तो मुझे लगता है कि यह एक छिपी हुई चांदी की रोशनी प्रतिबंध है। इस खोज के लिए स्टीवन के लिए धन्यवाद।

+0

आप टीआर कैसे हैं xaml में इस संसाधन का उपयोग करने के लिए ying? –

+0

मैं इसे बाध्यकारी के लिए कनवर्टर पैरामीटर में उपयोग करता हूं। मैं इसे एक स्थिर संसाधन के रूप में संदर्भित कर रहा हूं। – alf

उत्तर

2

मैं अपने निष्कर्ष है कि दशमलव प्रकार एक UserControl के संसाधन अनुभाग में एक स्थिर संसाधन के रूप में काम करने के लिए प्रकट नहीं होता है की पुष्टि की है। मैं फिर भी एक जोड़े समाधानों कि StackOverflow पर यहाँ चर्चा की गई है देख पा रहे हैं, और कहा कि मैं सिर्फ व्यक्तिगत रूप से Silverlight में दशमलव प्रकार के साथ काम करने को सत्यापित किया है: Access codebehind variable in XAML

समाधानों में शामिल हैं:

  • से संसाधन जोड़ने कोड-बैक (ऊपर दिए गए लिंक को देखें)
  • "elementname" प्रकार बाइंडिंग
  • का उपयोग कर कोड में किसी संपत्ति का संदर्भ देने के लिए उपयोगकर्ता संदर्भ डेटा संदर्भ संपत्ति को नियंत्रित करने पर सार्वजनिक दशमलव संपत्ति तक पहुंच।

दूसरा वैकल्पिक हल इस तरह किया जा सकता है:

<sdk:Label Name="label1" Content="{Binding ElementName=root, Path=DecimalProperty}" /> 

... जहां जड़ usercontrol टैग (इस विचार भी ऊपर के लिंक से है) इस तरह परिभाषित किया गया है:

<UserControl x:Class="SilverlightDecimal.MainPage" x:Name="root" .... > 

और इस में है अपने उपयोगकर्ता नियंत्रण के कोड-पीछे:

public decimal DecimalProperty 
{ 
    get 
    { 
     ... 
    } 
    set 
    { 
     ... 
    } 
} 
+0

धन्यवाद! पहला कामकाज वास्तव में काम किया। अब मैं एक्सएएमएल में संसाधन घोषित नहीं कर सकता हूं, इस बारे में एक स्पष्टीकरण की तलाश में हूं। – alf

+1

मुझे खुशी है कि कामकाज काम किया। Google का उत्तर नहीं लगता है और मुझे आश्चर्य है कि यह एक बग है या नहीं। मैंने जो जानकारी देखी है, उसमें से दशमलव दशमलव mscorlib.dll में निहित है जिसे स्वचालित रूप से चांदी की रोशनी परियोजनाओं द्वारा संदर्भित किया जाता है। प्री/पोस्ट बिल्ड इवेंट्स मैन्युअल रूप से यह सुनिश्चित करने के लिए कि बिल्ड आउटपुट निर्देशिका में डीएल भी मदद नहीं करता है। –

+1

मैं एक नंगे हड्डियों WPF परियोजना बना दिया है और यह पूरी तरह अजीब एक स्थिर संसाधन के रूप में दशमलव के साथ खुश है, कैसे था। –

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