【发布时间】:2018-09-20 16:18:06
【问题描述】:
我在 Xamarin 表单中遇到问题,例如: 我想转换数字(DataType 为十进制):12345.2486 以在 TextBox 上显示字符串(“。”之后的小数点后 2 位):
---> 12,345.25(美国)
---> 12 345.25(法国-法国)
---> 12.345,25 (nl-NL)
我使用代码后(IValueConverter接口中的方法):
public class CurrencyDecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
var temp = value as string;
if (string.IsNullOrEmpty(temp))
{
return decimal.Zero;
}
return value;
}
catch (Exception e)
{
Console.WriteLine(e);
return value;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
var stringValue = value as string;
culture = new CultureInfo(App.DeviceCulture);
stringValue = ConvertCultureCurrencyToString(stringValue, culture);
if (string.IsNullOrEmpty(stringValue))
return "0";
return stringValue;
}
catch
{
return decimal.Zero;
}
}
}
public string ConvertCultureCurrencyToString(string stringValue, CultureInfo ci)
{
try
{
if (string.IsNullOrEmpty(stringValue))
return "0";
stringValue = Convert.ToString(stringValue, ci);
var currency = decimal.Parse(stringValue, NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands, ci);
stringValue = currency.ToString("#,###.##", ci);
return stringValue;
}
catch
{
return "0";
}
}
我可以在 TextBox 上输入所有值 12345.2486(我的设备正在设置语言英语(en-US))。 但是当我从键盘输入值 0 时,TextBox 显示值 String.Empty,我无法在 TextBox 上输入值“0”,当我输入非常快的值“0.12”时,TextBox 只显示“.12”。 请帮我!谢谢!
【问题讨论】:
标签: c# xamarin mvvm xamarin.forms prism