为什么绑定的StringFormat没有使用当前的文化?

Via*_*ukh 5 c# xaml windows-phone-7

我目前的文化是ru-RU.我需要它将十进制格式化为货币字符串.

decimal n = 111.22M;

n.ToString("C") will return "111,22?."
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用绑定的StringFormat字段时,我得到一个"$ 111.22"的结果

<TextBlock Text={Binding Number, StringFormat=C} />
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

默认情况下,WPF 将使用英语作为绑定StringFormat处理的区域性,而不是线程的当前区域性。

您可以通过在应用程序的启动代码中添加以下内容来覆盖它:

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
    new FrameworkPropertyMetadata(      XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅 Josh Smith 关于创建国际化向导的文章。