В моем приложении я привязываю метки, текстовые блоки и т. Д. К двойным значениям в модели представления.
<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 распознавать пользовательские настройки региона?