在将Windows设置为法语区域格式并将逗号设置为十进制符号的同时,UWP CurrencyFormatter仍然显示一个点

时间:2018-11-30 14:46:38

标签: windows uwp

对于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;
}

我的设置是:

  • windows地区到法国
  • 区域格式为法语
  • 逗号十进制符号
  • 法语(法国)的键盘布局

但是,

  • 我在键盘上的数字键盘仍然显示点而不是逗号
  • 转换器显示的货币为€,但点而不是逗号

更新:

  • 十进制在TextBlock中显示一个点
  • 但是,当我在TextBox中输入小数时,我必须使用逗号。

这是我的设置的一些屏幕截图

decimal separator to comma regional setup to France Keyboard layout to France

更新:

这是我的转换器的屏幕截图,我们看到尽管语言是法语,而RegionCode是FR,DecimalFormatter却显示了一个点作为分隔符而不是逗号。

enter image description here

1 个答案:

答案 0 :(得分:0)

UWP应用使用“主要”语言作为应用显示语言-因此,如果您在系统设置中将英语作为第一语言,则该应用将同时使用CultureUICulture的英语,因此格式也将与英语匹配。