2010-10-30 18 views
10

मुझे अपने नकारात्मक मुद्रा संख्या के वर्तमान प्रारूप के साथ एक छोटी सी समस्या है। यहां मेरी स्थिति को फिर से शुरू करने वाला एक स्क्रीनशॉट है।नकारात्मक मुद्रा संख्या XAML

  1. इस प्रकार मैं अपने बाध्यकारी में स्ट्रिंगफॉर्मेट का उपयोग कर रहा हूं। (Btw, मैं केवल करने की कोशिश की {0: सी}) नकारात्मक मुद्रा संख्या 4.
  2. परिणाम के लिए उम्मीद
  3. अपने कंप्यूटर की वर्तमान सेटिंग्स जब मैं अपने आवेदन चल रहा हूँ
  4. रूप

alt text

परिणाम -0,08 $ क्यों नहीं है?

मुझे कैसे आगे बढ़ना चाहिए इसके बारे में कोई विचार?

आपके समय के लिए धन्यवाद।

अद्यतन:

मैं एक कनवर्टर के साथ समस्या को हल करने की कोशिश की, यहाँ परिणाम है:

  • मैंने पाया कि Thread.CurrentThread.CurrentUICultureThread.CurrentThread.CurrentCulture के रूप में ही नहीं था, इसलिए मैं में यह तय मेरी App.xaml.cs. दुर्भाग्य से, एक ही परिणाम।
  • मैंने कनवर्टर के माध्यम से अपने मूल्यों को प्रदर्शित करने का प्रयास किया ताकि यह देखने के लिए कि क्या मैं समस्या को डीबग कर सकता हूं। तथ्य यह है कि Convert विधि के पैरामीटर में प्राप्त संस्कृति ठीक थी, लेकिन CurrentNegativePatternThread.CurrentThread.CurrentCulture जैसा नहीं था। यही कारण है कि मुझे यह समस्या क्यों है। इस पल के लिए, मैं इसका उपयोग करूंगा: return ((double)value).ToString("C2", Thread.CurrentThread.CurrentCulture);Convert मेरे कनवर्टर की विधि में।
+0

+1 पर एक नजर डालें। शायद एक्सएएमएल में निर्दिष्ट करने का एक तरीका है? http://shujaatsiddiqi.blogspot.com/2010/08/wpf-localization-stringformat-for.html दिखाता है कि विंडो के लिए कन्स्ट्रक्टर में वर्तमान संस्कृति को कैसे बल देना है - शायद इसे डिबगिंग उद्देश्यों के लिए एक शॉट दें। 'भाषाप्रोपर्टी' को ओवरराइड करने के लिए –

+0

+1; उसे नहीं पता था। –

+0

@ मेरलीन मॉर्गन-ग्राहम: दुर्भाग्यवश, यह वही नहीं है जो मैं ढूंढ रहा था। लेकिन टिप के लिए धन्यवाद! – esylvestre

उत्तर

1

कोशिश बदलते CurrentCultureCurrentUICulture रहे हैं:

FrameworkElement.LanguageProperty.OverrideMetadata(
    typeof(FrameworkElement), 
    new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag)) 
); 

कृपया ध्यान दें कि हालांकि यह आपके क्षेत्रीय सेटिंग्स का उपयोग नहीं कर सकते। CultureInfo ऑब्जेक्ट आपकी क्षेत्रीय सेटिंग्स का वर्णन करता है, लेकिन IetfLanguageTag के साथ आप जो कर रहे हैं वह एक विशिष्ट संस्कृति को निकाला जा रहा है। उस संस्कृति में आपके क्षेत्रीय सेटिंग्स में किए गए समायोजन नहीं हैं।

वैकल्पिक रूप से, आप बाध्यकारी के ConvertCulture विकल्प पर एक नज़र डाल सकते हैं। यह वास्तव में CultureInfo लेता है। या तो सुनिश्चित नहीं हैं, शायद किसी भी तरह इस्तेमाल किया संस्कृति से संबंधित -

+0

दुर्भाग्य से, यह काम नहीं करता है। – esylvestre

+0

ऐसा इसलिए है क्योंकि आपके पास संस्कृति के विनिर्देशों को निर्दिष्ट करने का कोई तरीका नहीं है, और यह संस्कृति की सामान्य सेटिंग्स का उपयोग करता है। मुझे लगता है कि आप इसे प्राप्त करने का एकमात्र तरीका बाध्यकारी की 'कनवर्टर कल्चर' संपत्ति का उपयोग कर रहे हैं, लेकिन मुझे लगता है कि यह लागू करने के लिए एक दर्द होगा। यह वास्तव में 'CultureInfo' लेता है, लेकिन इसका उपयोग करना आसान नहीं लगता है। –

+0

तो आप वर्तमान में उपयोग किए जाने वाले समाधान का लाभ उठाने के बारे में क्या सोचते हैं (मेरे मुख्य पोस्ट में अपडेट देखें- मैं CurrentThread.CurrentCulture-) का उपयोग कर कनवर्टर के बारे में बात कर रहा हूं? – esylvestre