对于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
中输入小数时,我必须使用逗号。这是我的设置的一些屏幕截图
更新:
这是我的转换器的屏幕截图,我们看到尽管语言是法语,而RegionCode是FR,DecimalFormatter
却显示了一个点作为分隔符而不是逗号。
答案 0 :(得分:0)
UWP应用使用“主要”语言作为应用显示语言-因此,如果您在系统设置中将英语作为第一语言,则该应用将同时使用Culture
和UICulture
的英语,因此格式也将与英语匹配。