Silverlight 4, как отформатировать десятичное значение - PullRequest
1 голос
/ 05 мая 2010

Привет, извините за мой плохой английский ...

У меня есть очень простое текстовое поле в моем приложении sl4, например:

<TextBox Text="{Binding Source={StaticResource Valor}, Path=ValorReal, ValidatesOnExceptions=True, Mode=TwoWay, ValidatesOnDataErrors=True, StringFormat=\{0:c\}, NotifyOnValidationError=True}" />

и класс вроде:

public class Valor: INotifyPropertyChanged
{
    double _valorReal;
    public double ValorReal
    {
        get
        {
            return _valorReal;
        }
        set
        {
            _valorReal = value;
            RaisePropertyChanged("ValorReal");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}

Я живу в Бразилии, поэтому здесь десятичный разделитель - ",", а групповая цифра - ".", Поэтому $ 1.000,50 - это одна тысяча долларов и пятьдесят центов.

Но используяПример выше, если я наберу 1000,50 в текстовом поле, после того как я выйду из поля, оно превратится в $ 100,050.00.Как получить правильные настройки?

CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator, CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator * 1014 имеют право * 1014игнорирует их в моей привязке: (

Я пытался поместить туда System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR");, но ничего не произошло ...

1 Ответ

0 голосов
/ 06 мая 2010

Вам не нужно включать {0:} в строку формата.

{Binding Source={StaticResource Valor}, Path=ValorReal, ValidatesOnExceptions=True, Mode=TwoWay, ValidatesOnDataErrors=True, StringFormat=c, NotifyOnValidationError=True}
...