【发布时间】:2018-11-30 14:46:38
【问题描述】:
对于 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中输入小数时,我必须使用逗号
这是我设置的一些屏幕截图
更新:
这是我的转换器的屏幕截图,我们看到尽管语言是法语并且 RegionCode 是 FR,DecimalFormatter 显示一个点作为分隔符而不是逗号。
【问题讨论】:
-
设置中语言屏幕的主要语言是法语吗?
-
不,是英文。