2011-01-27 7 views
12

का सम्मान नहीं करता है अगर मैं Text को TextBox में एक फ्लोट संपत्ति में बांधता हूं तो प्रदर्शित टेक्स्ट सिस्टम दशमलव (डॉट या कॉमा) का सम्मान नहीं करता है। इसके बजाय यह हमेशा एक बिंदु ('।') प्रदर्शित करता है। लेकिन अगर मैं MessageBox (ToString() का उपयोग करके मान प्रदर्शित करता हूं) तो सही सिस्टम दशमलव का उपयोग किया जाता है।टेक्स्टबॉक्स सिस्टम डेसिमल (डॉट या कॉमा)

enter image description here

Xaml

<StackPanel> 
    <TextBox Name="floatTextBox" 
      Text="{Binding FloatValue}" 
      Width="75" 
      Height="23" 
      HorizontalAlignment="Left"/> 
    <Button Name="displayValueButton" 
      Content="Display value" 
      Width="75" 
      Height="23" 
      HorizontalAlignment="Left" 
      Click="displayValueButton_Click"/> 
</StackPanel> 

कोड के पीछे

public MainWindow() 
{ 
    InitializeComponent(); 
    FloatValue = 1.234f; 
    this.DataContext = this; 
} 
public float FloatValue 
{ 
    get; 
    set; 
} 
private void displayValueButton_Click(object sender, RoutedEventArgs e) 
{ 
    MessageBox.Show(FloatValue.ToString()); 
} 

अब के रूप में, मैं एक कनवर्टर (सिस्टम दशमलव के साथ डॉट को बदल देता है कि के साथ इस समाधान कर लिया है जो काम करता है) लेकिन इसका कारण क्या है कि यह निरंतर है? क्या यह डिजाइन द्वारा है और इसे हल करने का कोई आसान तरीका है?

SystemDecimalConverter (किसी और मामले में किसी को एक ही समस्या है में)

public class SystemDecimalConverter : IValueConverter 
{ 
    private char m_systemDecimal = '#'; 
    public SystemDecimalConverter() 
    { 
     m_systemDecimal = GetSystemDecimal(); 
    } 
    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value.ToString().Replace('.', m_systemDecimal); 
    } 
    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value.ToString().Replace(m_systemDecimal, '.'); 
    } 
    public static char GetSystemDecimal() 
    { 
     return string.Format("{0}", 1.1f)[1]; 
    } 
} 

उत्तर

10

ऐसा लगता है कि इस के लिए एक समाधान है जैसे:

http://www.nbdtech.com/Blog/archive/2009/03/18/getting-a-wpf-application-to-pick-up-the-correct-regional.aspx

यहाँ एक और चर्चा है कि संभवतः मदद कर सकते हैं:

http://connect.microsoft.com/VisualStudio/feedback/details/442569/wpf-binding-uses-the-wrong-currentculture-by-default

+0

+1, यह बहुत अच्छा है! धन्यवाद! आपके द्वारा अभी दिए गए लिंक से गुजरने के लिए समय नहीं है, लेकिन जैसे ही मुझे समय मिलता है, मैं उन्हें जांचूंगा। तो मैं यह देखने के लिए कुछ जवाब देने से पहले कुछ घंटों का इंतजार करूंगा कि कोई और कुछ लेकर आता है या नहीं! अच्छा कार्य –

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