Как использовать индивидуальный регион Windows и языковые настройки в WPF

Я работаю в Намибии. Намибия не является опцией в области 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);
    }
}

и результат выглядит так: Currency Issue Result

Я знаю, что есть подобный вопрос здесь , но я надеялся получить лучшие ответы с более полным вопросом. Я в основном работаю над финансовыми приложениями для клиентов намибийских клиентов, так что это довольно серьезная проблема для меня - если нет способа сделать это с .NET 4.0, я бы рассмотрел подачу отчетов об ошибке, но я просто хотел проверить здесь Отказ

Редактировать:

просто открыл на этот вопрос. Я надеюсь на это либо решение, которое не является развлекательным обходным путем, ни подтверждение, что это ошибка и должна быть подана как таковая.

7
задан Community 23 May 2017 в 12:01
поделиться