我在XAML代码中格式化双值时遇到一些问题。
double price = 10300.455;
此号码应在美国系统上显示为 10,300.45 ,在德国系统上显示为 10.300,45 。
到目前为止,我设法使用以下内容限制数字。
Binding="{Binding price, StringFormat=F2}"
但结果是 10300.45 ,这不是我的想法。我可以使用转换器轻松解决这个问题,但如果还有其他方法,我不想这样做。恰到好处的格式化程序就可以了。
答案 0 :(得分:21)
Binding="{Binding price, StringFormat=N2}"
尝试使用N
代替F
。 N
是数字格式,基于不同的文化,自动显示数字格式。查看下面的示例代码,它是一个控制台应用程序。但是,如果绑定使用正确的文化,您将获得正确的值。 F2
是定点符号。
double price = 10300.455;
Console.WriteLine(price.ToString("N2",
CultureInfo.CreateSpecificCulture("de-DE") ));
// displays 10.300,46
Console.WriteLine(price.ToString("N2",
CultureInfo.CreateSpecificCulture("en-US") ));
// displays 10,300.46
答案 1 :(得分:5)
对于任何想知道有关字符串格式的不同构建及其用法的信息,可以在这里看到:
http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.100).aspx
答案 2 :(得分:2)
将当前的系统文化设置为全球WPF文化。 http://www.codeproject.com/Articles/442505/WPF-default-binding-format-culture
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));