我按照这里的说明将我的视图模型验证绑定到输入表单。 Using MVVMCross to bind to error messages
我现在遇到的问题是由于验证元素,表单上有很多额外的间距。如何使这些间距问题消失?使用可见性转换器有点困难,因为每个字段都没有属性。 Android和iOS也存在同样的问题。我想可能是某种自定义可见性转换器?
答案 0 :(得分:4)
我认为快速解决方法可能是使用类似Visible Errors['Email']
的绑定 - 但是,您报告的是无法正常工作(因此转移到https://github.com/MvvmCross/MvvmCross/issues/494 - 谢谢)
由于这不能直接起作用,那么你应该能够使用像(在Android中)这样的东西绑定Visible
布尔属性:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#ff0000"
android:text="My error text"
local:MvxBind="Visible ErrorExists(Errors['Email'],FallbackValue=null)"
/>
其中ErrorExists
是:
public class ErrorExistsValueConverter : MvxValueConverter
{
public override object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (value != null);
}
}
对于iOS,如果您要显示/隐藏UIViews,那么您需要确保您的UI布局自动更新 - 例如使用约束
作为替代UI技术,您还应该能够对EditText的背景颜色使用绑定 - 类似于https://github.com/MvvmCross/MvvmCross-Tutorials/blob/master/ValueConversion/ValueConversion.UI.Droid/Resources/Layout/View_Colors.axml中的颜色绑定