我的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");
但是,没有任何事情发生......
答案 0 :(得分:0)
您不需要在格式字符串中包含{0:}。
{Binding Source={StaticResource Valor}, Path=ValorReal, ValidatesOnExceptions=True, Mode=TwoWay, ValidatesOnDataErrors=True, StringFormat=c, NotifyOnValidationError=True}