根据文化在WPF中更改货币符号/日期时间格式

时间:2019-03-13 19:18:03

标签: c# wpf xaml

我有一个需要基于系统语言设置的DateTime格式和基于用户设置的Currency符号的格式的要求。用户设置来自用户选择国家的组合框。因此,如果用户选择英国,则货币应以英镑显示,日期时间应以美国格式显示。

例如:如果“系统”设置为“美国”,而“用户”设置为“英国”,则DateTime格式必须为美国,“货币”符号为£。

我已使用以下代码根据系统区域设置更改了区域性信息:

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

如何根据用户设置格式化货币符号。我在整个应用程序中都使用了区域性格式StringFormat=C2,它根据系统的区域设置显示货币符号。

此应用程序为WPF。

组合框中包含的一些国家是:美国,德国,英国,加拿大

编辑:

我可以使用类似这样的东西。但是有没有办法从我的视图模型中绑定这些区域性信息?

   <StackPanel Margin="10">
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='en-UK'/>
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='en-US'/>
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='de-DE'/>
    </StackPanel>

1 个答案:

答案 0 :(得分:0)

您可以使用CultureInfo.CurrentCulture获得所有相关的CultureInfo

从文档中:

  

Windows允许用户覆盖标准的属性值   CultureInfo对象及其关联对象(通过使用Regional和   控制面板中的“语言选项”。由返回的CultureInfo对象   CurrentCulture属性反映了这些用户覆盖   以下情况:[...]

在获取CultureInfo对象之后,您可以像这样获得货币符号及其NumberFormat

Console.WriteLine(currentCulture.NumberFormat.CurrencySymbol)
相关问题