2012-01-13 11 views
9

पर बाध्यकारी डबल मैंने अक्सर बिना किसी समस्या के इंटीग्रर्स से जुड़ने के लिए टेक्स्टबॉक्स का उपयोग किया है।टेक्स्टबॉक्स

हालांकि अगर मैं एक टेक्स्टबॉक्स को डबल में बांधने का प्रयास करता हूं तो यह काम नहीं करता है।

जब मैं 5,85 टाइप करता हूं (, मेरी संस्कृतियों दशमलवसेपरेटर होने के नाते) मैं डबल वैल्यू पर 585.0 पास करता हूं।

इसे कैसे परिवर्तित किया जा रहा है और मैं इसे ठीक करने के लिए किस समाधान का उपयोग कर सकता हूं? क्या वैल्यू कनवर्टर सबसे अच्छा समाधान होगा?

+2

ऐसा लगता है कि या तो आपका दशमलव विभाजक नहीं है या एप्लिकेशन संस्कृति की परवाह नहीं करता है। –

+0

मैं डिबगिंग कर रहा था और सुनिश्चित किया था कि 'NumberFormatInfo.CurrentInfo.NumberDecimalSeparator' मैं वही था जो मैं था। यह सही संपत्ति नहीं है? –

+1

यह सही के बारे में लगता है ... –

उत्तर

4

आपको अपने आवेदन की निर्माता को यह जोड़ने की कोशिश कर सकते हैं:

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

हालांकि, कृपया ध्यान दें कि यह अगर तुम दशमलव विभाजक अनुकूलित काम नहीं करेगा। (WPF double valued data binding with custom decimal separator)

+0

मुख्य विंडो कन्स्ट्रक्टर में भाषा = XmlLanguage.GetLanguage (CultureInfo.CurrentCulture.IetfLanguageTag) को सेट क्यों न करें? – Clemens

+1

क्लेमेंस, आपका समाधान भी काम करता है लेकिन आपको 'एप्लिकेशन कन्स्ट्रक्टर विधि' की तुलना में एप्लिकेशन में बनाए गए प्रत्येक विंडो के लिए इसे अलग से रखना याद रखना होगा, जहां आवेदन – friskm

+0

में सभी फ्रेमवर्कमेंट्स के लिए भाषा सेट है, आप सही हैं। इस मामले में अंतर्निहित निर्भरता संपत्ति के डिफ़ॉल्ट मान को ओवरराइड करने के लिए समझ में आता है। – Clemens

1

नैदानिक ​​प्रयोजनों के लिए, यदि आप कोड की इन दो पंक्तियों अपने कार्यक्रम की शुरुआत करने के लिए जोड़ सकते हैं ...

var cc = Thread.CurrentThread.CurrentCulture; 
    var cuic = Thread.CurrentThread.CurrentUICulture; 

और परिणामों की तुलना। संभावनाएं काफी अच्छी हैं कि 'क्यूइक' संस्कृति 'एन-यूएस' धारण करेगी क्योंकि यूआई थ्रेड आमतौर पर इस तरह से किया जाता है। आप परियोजना फ़ाइल में <UICulture> टैग की स्थापना करके इसे बदल सकते हैं, या आप एक निदान के रूप में की कोशिश कर सकते हैं ...

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 

और साइड इफेक्ट का आकलन। अन्यथा आप एक IValueConverter को कार्यान्वित कर सकते हैं ...

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