Для приложения UWP мне написали следующий конвертер.
public class CurrencyConverter : IValueConverter
{
private readonly CurrencyFormatter _userCurrencyFormatter;
private readonly CultureInfo _userCulture;
public CurrencyConverter()
{
var userCurrency = Windows.System.UserProfile.GlobalizationPreferences.Currencies[0];
_userCurrencyFormatter = new CurrencyFormatter(userCurrency);
_userCulture = new CultureInfo(Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion);
}
public object Convert(object value, Type targetType, object parameter, string language) => value == null ? null : _userCurrencyFormatter.Format((double)(decimal)value);
public object ConvertBack(object value, Type targetType, object parameter, string language) => decimal.TryParse((string)value, NumberStyles.Number, _userCulture, out var result) ? (decimal?)result : null;
}
Моя настройка:
- Окно во Францию
- Региональный форматна французский
- десятичный символ с запятой
- Раскладка клавиатуры на французский (Франция)
Однако
- Моя цифровая клавиатура наклавиатура по-прежнему отображает точку, а не запятую
- Преобразователь отображает валюту с евро, но с точкой, а не запятой
ОБНОВЛЕНИЕ:
- отображаются десятичныес точкой в
TextBlock
- однако я должен использовать запятую при вводе десятичной дроби в
TextBox
Вот несколько скриншотов моей установки
![Keyboard layout to France](https://i.stack.imgur.com/9JF0v.png)
ОБНОВЛЕНИЕ:
Вот скриншот моегоконвертер, в котором мы видим, что, несмотря на то, что языком является французский, а RegionCode - FR, DecimalFormatter
отображает точку в качестве разделителя, а не запятую.
![enter image description here](https://i.stack.imgur.com/4QA5g.png)