WPF: StringFormat для двойного значения не распознает настройки области пользовательских окон - PullRequest
0 голосов
/ 30 апреля 2018

В моем приложении я привязываю метки, текстовые блоки и т. Д. К двойным значениям в модели представления.

<Label Content="{Binding DoubleValue}" ContentStringFormat="{}{0:0.00}">
<TextBlock Text="{Binding DoubleValue, StringFormat='\{0:f2\}'}"

В моем «коде позади» я установил свойство языка MainWindow:

TheMainWindow.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.Name);

Это работает как шарм. Когда выбрана немецкая культура, все двойные значения используют запятую в качестве десятичного знака, а когда выбрана английская культура, все двойные значения используют точку в качестве десятичного знака.

Проблема заключается в том, что вы настраиваете настройки области Windows, например Я настраиваю настройку немецкого региона, чтобы точка была десятичным разделителем.

Метод StringFormat не распознает эту пользовательскую настройку! Он по-прежнему форматирует двойные значения с запятой в качестве десятичного символа.

Если я создаю строковое свойство в модели представления, как это

public string FormattedDoubleValue
{
        get { return DoubleValue.ToString("0.00"); }
}

и привязка к этому свойству, это распознает пользовательский параметр региона!

Есть ли способ заставить метод StringFormat распознавать пользовательские настройки региона?

1 Ответ

0 голосов
/ 30 апреля 2018

Я нашел решение здесь: CurrentUICulture игнорирует настройки региона и языка

Использование ответа MSkuta работает без необходимости изменения всех моих файлов xaml:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...