c# - 显示货币的差异

标签 c# wpf

在尝试使用货币值格式化字符串时,我注意到 WPF 显示它的方式有所不同。

XAML 中格式化decimal 值时,WPF 将其显示为5,99 €

<TextBlock Text="{Binding Total, StringFormat={}{0:C}}"/>
return 5.99m;

当我在代码隐藏中格式化时,它显示为 € 5,99

<TextBlock Text="{Binding TotalString}"/>
return string.Format("{0:C}", 5.99m);

这是一个错误吗?

我有 Windows 10,目标 .NET 版本是 4.5.2。

最佳答案

设置绑定(bind)的 StringFormat 时,WPF 不使用 CultureInfo.CurrentCulture,而是默认使用 en-US,或者您通过设置元素(或其父元素)的 Language 属性指定的值。参见 this question了解更多详情。

另一方面,string.Format 确实使用了 CultureInfo.CurrentCulture。用户可以配置它在格式化货币方面的确切行为。

例如,货币模式由注册表值 HKEY_CURRENT_USER\Control Panel\International\iCurrency 控制,可以在控制面板中设置(抱歉,这是德语):

enter image description here

因此,您可能只需更改该设置即可实现从 StringFormat 获得的格式化行为。

关于c# - 显示货币的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41201102/

相关文章:

wpf - 如何在 WPF 中从 XAML 调用调用方法?

c# - 如何获取和更改 Windows 凭据用户名和密码

c# - 审批工作流的同义词

c# - (流畅)具有计算属性的类的 NHibernate 映射

c# - 将事件绑定(bind)到使用 WPF 中的数据模板创建的控件

WPF 样式触发器

c# - C# 中的 Image.FromStream()

c# - 在 .NET 中,即使对象的构造函数从未运行过,终结器也可以运行吗?

c# - IDictionary 到字符串

.net - WPF MVVM + UserControl 与后面的代码