繁体   English   中英

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

[英]Change Currency symbol/Datetime format in WPF based on Culture

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

例如:如果系统设置为US,用户设置为UK,则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>

你可能会得到所有相关CultureInfo使用CultureInfo.CurrentCulture

从文档中:

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

获取CultureInfo对象后,您可以使用其NumberFormat获得货币符号,如下所示:

Console.WriteLine(currentCulture.NumberFormat.CurrencySymbol)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM