Все статьи в Интернете предполагают, что для того, чтобы привязка XAML обнаружила выбранную культуру в операционной системе, необходимо использовать эту строку.
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata((XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))));
Проблема заключается в том, что региональные настройки в окнах позволяют пользователю настраивать форматирование дат и чисел любым способом, который он хочет.
Например, допустим, что пользователю требуется 3 десятичных знака вместо 2. Он переходит к региональным настройкам и выполняет это обновление. Проблема в том, что это изменение не фиксируется в привязке Xaml
<TextBlock Text="{Binding Payments, StringFormat=C}" /> <!--display 2 digits-->
Как ни странно, в коде позади, если я использую ToString ("C"), я успешно получу любую настройку, которую я сделал на стороне сервера.
decimal sampleNumber = 1.123;
string s = sampleNumber.ToString("C"); //Puts 3 digits in the string variable
Мой обходной путь - использовать пользовательский конвертер, где я делаю ToString и возвращаю строку в привязку. Но странно, что я не видел этой проблемы (которая, скорее всего, является ошибкой в WPF), размещенной где-либо в сети.
Я что-то упустил?