Silverlight 4如何格式化绑定的十进制值

时间:2010-05-05 15:46:33

标签: c# silverlight bind cultureinfo

嘿,抱歉我的英语不好......

我的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 具有正确的值,但silverlight忽略了我的绑定:(

我试着把 System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR"); 但是,没有任何事情发生......

1 个答案:

答案 0 :(得分:0)

您不需要在格式字符串中包含{0:}。

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