Single?属性绑定到numberDecimal EditText。 MvvmCross更新每个非空的EditText输入的属性值。但是当EditText为空时它不会更新属性,而我需要为空输入提供属性的 null 值。
我使用自定义转换器
为这个问题编写了一个愚蠢的解决方案public class PriceValueConverter : MvxValueConverter<Single?, String>
{
protected override float? ConvertBack(string sourceValue, Type targetType, object parameter, CultureInfo culture)
{
Single targetValue;
if ( !string.IsNullOrWhiteSpace(sourceValue) &&
Single.TryParse(sourceValue, out targetValue))
return targetValue;
return null;
}
protected override string Convert(float? value, Type targetType, object parameter, CultureInfo culture)
{
return value.ToString();
}
}
可以使用local设置为EditText:MvxBind =“Text Price,Converter = Price”。 但这不是一种优雅的方式。
编辑:
视图模型的属性代码如下:
public Single? Price
{
get { return _price; }
set
{
_price = value;
RaisePropertyChanged(() => Price);
}
}
private Single? _price;
仅当有界EditText具有某些内容(非空)时,才会调用属性的Setter以及RaisePropertyChanged。因此,当我从EditText中删除所有数字时,关联的属性等于最后的非空值,而对于空输入我需要 Price = null 。
如果我在调用RaisePropertyChanged时尝试设置断点,则只有当EditText为非空时才会调用它,而当它为空时不会被调用。
感谢您的帮助!
答案 0 :(得分:1)
您能否显示视图模型属性的代码?
您确定要在该属性上实际调用RaisePropertyChanged吗?
如果您在调用RaisePropertyChanged时尝试设置断点,它是否有效?