Я работаю в Намибии. Намибия не является опцией в области Windows Region и языковых настроек, но поделиться большинством культурных особенностей с Южной Африкой, поэтому мы выбираем английский Южно-Африку, а затем настроить . И не «р» (южноафриканский ранд).
Однако я не могу убедить WPF использовать индивидуальную валюту. Использование string.format («{0: C}», foo)
в коде работает нормально, но с использованием {Binding Path = SomecurrencyValue, StringFormat = C
} `в Xaml все еще использует Символ «R», а не на заказ символ «n $».
В app.xaml.cs
Я устанавливаю культуру приложений следующим кодом:
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.LCID, true);
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(
System.Windows.Markup.XmlLanguage.GetLanguage(
System.Globalization.CultureInfo.CurrentUICulture.IetfLanguageTag)));
Как демонстрация, вот какой-то код XAML, который показывает задачу:
Formatted in XAML with:
Text="{Binding Path=SomeCurrencyValue, StringFormat=c}"
Result:
Formatted in code with:
return string.Format("{0:c}", SomeCurrencyValue);
Result:
The DataContext
Для вышеуказанного представления содержится следующее:
public double SomeCurrencyValue
{
get { return 34.95; }
}
public string SomeCurrencyString
{
get
{
return string.Format("{0:c}", SomeCurrencyValue);
}
}
и результат выглядит так:
Я знаю, что есть подобный вопрос здесь , но я надеялся получить лучшие ответы с более полным вопросом. Я в основном работаю над финансовыми приложениями для клиентов намибийских клиентов, так что это довольно серьезная проблема для меня - если нет способа сделать это с .NET 4.0, я бы рассмотрел подачу отчетов об ошибке, но я просто хотел проверить здесь Отказ
Редактировать:
просто открыл на этот вопрос. Я надеюсь на это либо решение, которое не является развлекательным обходным путем, ни подтверждение, что это ошибка и должна быть подана как таковая.