使用转换器绑定到多个值

时间:2013-11-11 15:32:53

标签: android mvvmcross

在我的Android应用中,如果找不到搜索结果,我会想要显示一条消息。 当视图模型的IsBusy属性为false且HasResults属性为false时会发生这种情况

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="No results"
        local:MvxBind="Visibility (IsBusy==false) &amp;&amp; (HasResults==false),Converter=Visibility" />

以下是可见性转换器的外观:

public class VisibilityValueConverter : IMvxValueConverter
    {
        #region IMvxValueConverter implementation

        object IMvxValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {

            if (value is bool)
            {
                return (bool)value == true ? (ViewStates)ViewStates.Visible : ViewStates.Gone;
            }
            else if (value is ViewStates)
            {
                return value;
            }
            else
            {
                return value != null ? (ViewStates)ViewStates.Visible : ViewStates.Gone;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotSupportedException();
        }

        #endregion
    }

我不明白为什么VisibilityValueConverter会收到Android的ViewStates类型的值。

这就是我必须为ViewState类型实现测试的原因,否则我看到的是没有它就会无法正常工作。

转换器不应该仅接收布尔值吗? 不应该是表达式'(IsBusy == false)&amp;&amp; (HasResults == false)'?

也许我在这里做错了什么?

0 个答案:

没有答案