为什么有约束力的的StringFormat没有使用当前的文化? [英] Why a binding's StringFormat didn't use a current culture?

查看:140
本文介绍了为什么有约束力的的StringFormat没有使用当前的文化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我现在的文化是RU-RU。我需要它来格式化十进制货币字符串

 小数N = 111.22M; 

n.ToString(C)将返回111,22р。



但是当我尝试使用绑定的StringFormat场,我得到一个$ 111.22的结果。



 < TextBlock的文本= {结合数,的StringFormat = C} /> 


解决方案

在默认情况下,WPF将使用英语作为培养结合的StringFormat 的处理,而不是线程的当前文化。



您可以通过添加应用程序的启动以下覆盖此代码:

  FrameworkElement.LanguageProperty.OverrideMetadata(typeof运算(FrameworkElement的),
新FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo的。 CurrentCulture.IetfLanguageTag)));

有关详细信息,请参阅约什 - 史密斯的上的创建国际化向导


My current culture is ru-RU. I need it to format decimal to currency string.

decimal n = 111.22M;

n.ToString("C") will return "111,22р."

but when I try to use StringFormat field of a binding I get a "$111.22" result

<TextBlock Text={Binding Number, StringFormat=C} />

解决方案

By default, WPF will use English as the culture for binding StringFormat processing, not the thread's current culture.

You can override this by adding the following in the application's startup code:

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

For details, see Josh Smith's article on Creating an Internationalized Wizard.

这篇关于为什么有约束力的的StringFormat没有使用当前的文化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆