使用小数分隔符在XAML中格式化值?

时间:2009-12-28 09:11:54

标签: wpf xaml formatting numbers

我在XAML代码中格式化双值时遇到一些问题。

double price = 10300.455;

此号码应在美国系统上显示为 10,300.45 ,在德国系统上显示为 10.300,45

到目前为止,我设法使用以下内容限制数字。

Binding="{Binding price, StringFormat=F2}"

但结果是 10300.45 ,这不是我的想法。我可以使用转换器轻松解决这个问题,但如果还有其他方法,我不想这样做。恰到好处的格式化程序就可以了。

3 个答案:

答案 0 :(得分:21)

Binding="{Binding price, StringFormat=N2}" 

尝试使用N代替FN是数字格式,基于不同的文化,自动显示数字格式。查看下面的示例代码,它是一个控制台应用程序。但是,如果绑定使用正确的文化,您将获得正确的值。 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)));