1

在我的 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) && (HasResults==false)' 的结果吗?

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

4

0 回答 0