我有一个需要基于系统语言设置的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>
答案 0 :(得分:0)
您可以使用CultureInfo.CurrentCulture获得所有相关的CultureInfo
。
从文档中:
Windows允许用户覆盖标准的属性值 CultureInfo对象及其关联对象(通过使用Regional和 控制面板中的“语言选项”。由返回的CultureInfo对象 CurrentCulture属性反映了这些用户覆盖 以下情况:[...]
在获取CultureInfo对象之后,您可以像这样获得货币符号及其NumberFormat
:
Console.WriteLine(currentCulture.NumberFormat.CurrencySymbol)