【发布时间】:2016-11-01 12:28:04
【问题描述】:
我们在 MvvmCross 中与 Android 中的 EditText 控件相关的转换器存在问题:
在我们的应用中,用户插入用户数据。我们必须在转换器中对这些数据进行一些计算,然后将数据写入我们的视图模型中。
只要用户不恢复他的输入,这就会起作用。 这意味着,如果他使用后退键,则该值被正确编辑,直到他到达“。”之前的最后一位小数。 (例如:55.99,当他到达“55.9”时)。 “.9”将被正确删除,但光标会在剩余的“55”之前跳转。 我们如何解决这种烦人的行为?
视图模型提取:
private Nullable mdValue1 = null;
public Nullable<decimal> Value1
{
get { return mdValue1; }
set
{
SetProperty(ref mdValue1, value);
}
}
private Nullable<decimal> mdValue2;
public Nullable<decimal> Value2
{
get { return mdValue2; }
set
{
SetProperty(ref mdValue2, value, nameof(Value2));
}
}
转换器(简体):
public class DecimalToStringValueConverter : MvxValueConverter<Nullable<decimal>, string>
{
protected override string Convert(Nullable<decimal> poValue, Type poTargetType, object poParameter, CultureInfo poCulture)
{
if (!poValue.HasValue)
{
return null;
}
return poValue.Value.ToString();
}
protected override Nullable<decimal> ConvertBack(string value, Type targetType, object parameter, CultureInfo culture)
{
if (string.IsNullOrWhiteSpace(value))
{
return null;
}
return decimal.Parse(value);
}
}
配置
安卓版本:4.4/5.1/7
平台:Xamarin
【问题讨论】:
标签: c# android xamarin mvvmcross