Изменить символ валюты / формат даты и времени в WPF на основе культуры - PullRequest
1 голос
/ 13 марта 2019

У меня есть требование, которое требует форматирования DateTime на основе настроек языка системы и символа валюты на основе настроек пользователя.Пользовательские настройки из поля со списком, где пользователь выбирает страну.Таким образом, если пользователь выбирает Великобританию, то валюта должна отображаться в фунтах, а дата и время должны отображаться в формате США.

Например: если для параметра «Система» задано значение «США», а для параметра «Пользователь» - значение «Великобритания», то формат DateTime должен быть в США, а символ валюты - £.

. Я использовал этот код дляизменить информацию о культуре в соответствии с настройками локали системы:

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), 
            new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(
                        System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag
                )
            )
        );

Как отформатировать символ валюты в соответствии с настройками пользователя.Я использовал форматирование культуры StringFormat=C2 в приложении, и оно отображает символ валюты в зависимости от языкового стандарта системы.

Это приложение WPF.

Некоторые из стран, включенных вВ выпадающий список входят: США, Германия, Великобритания, Канада

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

Я мог бы использовать что-то вроде этого.Но есть ли способ связать эту информацию о культуре с моей моделью представления?

   <StackPanel Margin="10">
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='en-UK'/>
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='en-US'/>
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='de-DE'/>
    </StackPanel>

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете получить все связанные CultureInfo, используя CultureInfo.CurrentCulture .

Из документации:

Windows позволяет пользователям переопределять стандартные значения свойств объекта CultureInfo и связанных с ним объектов с помощью региональных и языковых параметров на панели управления.Объект CultureInfo, возвращаемый свойством CurrentCulture, отражает эти пользовательские переопределения в следующих случаях: [...]

После получения объекта CultureInfo вы можете получить символ валюты с его NumberFormat, например так:

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