2011-01-27 11 views
12

Jeśli wiążę Text w TextBox do właściwości float, wówczas wyświetlany tekst nie honoruje systemu dziesiętnego (kropka lub przecinek). Zamiast tego zawsze wyświetla kropkę ("."). Ale jeśli wyświetlam wartość w MessageBox (przy użyciu ToString()), to jest używany poprawny system dziesiętny.TextBox nie honoruje System dziesiętny (kropka lub przecinek)

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> 

kod za

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()); 
} 

jak na razie, mam rozwiązać ten z konwerterem, który zastępuje kropki z dziesiętnym systemie (który działa), ale jaki jest tego powód? Czy jest to zgodne z projektem i czy istnieje łatwiejszy sposób rozwiązania tego problemu?

SystemDecimalConverter (w przypadku, ktoś inny ma ten sam problem)

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]; 
    } 
} 

Odpowiedz

10
+0

+1, to świetnie! Dzięki! Nie masz czasu na przeglądanie linków podanych w tej chwili, ale sprawdzę je, gdy tylko dostanę czas. Tak więc poczekam kilka godzin, zanim zaakceptuję twoją odpowiedź, żeby sprawdzić, czy ktoś coś wymyśli! Świetna robota –

Powiązane problemy