MvvmCross验证绑定可见性

时间:2013-11-13 20:05:27

标签: android ios xamarin mvvmcross

我按照这里的说明将我的视图模型验证绑定到输入表单。 Using MVVMCross to bind to error messages

我现在遇到的问题是由于验证元素,表单上有很多额外的间距。如何使这些间距问题消失?使用可见性转换器有点困难,因为每个字段都没有属性。 Android和iOS也存在同样的问题。我想可能是某种自定义可见性转换器?

1 个答案:

答案 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中的颜色绑定