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

时间:2012-10-17 00:51:52

标签: c# windows-phone-7 xaml

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

decimal n = 111.22M;

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

有关详细信息,请参阅Josh Smith关于Creating an Internationalized Wizard的文章。