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

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

decimal n = 111.22M; n.ToString("C") will return "111,22р." 

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

  

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

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

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

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