1. Убедитесь, что вы переопределяете значение по умолчанию LanguageProperty
как можно раньше. Статический конструктор приложения - лучшая ставка. Это важно, потому что BindingExpression
кэширует значение этого свойства и не переоценивает его впоследствии по соображениям производительности.
2. Какой у вас CultureInfo.CurrentCulture
? Вы уверены, что это тот, который вы ожидаете увидеть?
3. Переопределение метаданных свойства Language
не действует, если вы укажете атрибут xml:lang
где-то вверху в дереве. Например. если вы скажете:
<StackPanel xml:lang="it">
<TextBlock Text="{Binding StringFormat=C}"/>
</StackPanel>
Вы получите итальянскую валюту независимо от того, что вы указали в метаданных свойства.
4. Переопределение метаданных свойства Language
не действует, если вы указали свойство ConverterCulture
в привязке. Например. если вы скажете: <TextBlock Text="{Binding StringFormat=C, ConverterCulture=ja}"/>
, вы получите японскую валюту независимо от того, что вы указали в метаданных свойства или в атрибуте xml:lang
.
Насколько я знаю, это поведение не менялось между фреймворками.
Надеюсь, это поможет