代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

是否使用十进制分隔符设置XAML中的值的格式?

  •  8
  • TalkingCode  · 技术社区  · 15 年前

    我在设置XAML代码中的双值格式时有点问题。

    double price = 10300.455;
    

    此号码应显示为 一万零三百点四五 在美国系统和AS上 10300、45 在德国系统上。

    到目前为止,我设法用以下方法来限制这些数字。

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

    但结果是 一万零三百点四五 这不是我想的。我可以使用转换器很容易地解决这个问题,但如果有其他方法的话,我不想这样做。正确的格式化程序就可以了。

    3 回复  |  直到 12 年前
        1
  •  21
  •   Peter Mortensen code4jhon    12 年前
    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
    
        2
  •  5
  •   Jesse Carter    12 年前

    对于任何想知道关于不同的内置字符串格式及其用法的信息的人,可以在这里看到:

    http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.100).aspx

        3
  •  2
  •   dizel3d    12 年前

    将当前系统文化设置为全局WPF文化。 http://www.codeproject.com/Articles/442505/WPF-default-binding-format-culture

    FrameworkElement.LanguageProperty.OverrideMetadata(
        typeof(FrameworkElement),
        new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));