[英]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.