使用MvxVisibility的Xamarin.Droid绑定可见性转换器不起作用

时间:2015-09-04 00:40:14

标签: xamarin.android mvvmcross

我的file.axml

中有布局的树形部分

我想根据我的viewmodel中的属性显示/隐藏其中一些

我的属性是一个枚举器,我使用转换器根据枚举返回可见性。

Iam在核心中使用了“MvxVisibility”类型,但由于某种原因,android不了解返回类型(可见性)

这是我的android绑定:

MvxValueConverter<RedeemCodeState, MvxVisibility>
    {
        protected override MvxVisibility Convert(RedeemCodeState mark, Type targetType, object parameter, CultureInfo culture)
        {

            switch (mark)
            {
                case RedeemCodeState.RedeemCodeSubmit:
                    if (parameter.ToString() == "0")
                        return MvxVisibility.Visible;
                    return MvxVisibility.Collapsed;

                case RedeemCodeState.AudiosSelection:
                    if (parameter.ToString() == "1")
                        return MvxVisibility.Visible;
                    return MvxVisibility.Collapsed;

                case RedeemCodeState.Confirmation:
                    if (parameter.ToString() == "2")
                        return MvxVisibility.Visible;
                    return MvxVisibility.Collapsed;

                default:
                    return MvxVisibility.Collapsed;
            }
        }
    }

这是我的转换器(核心)  公共类RedeemStateToVisibilityConverter:

public partial class RedeemCodeViewModel
    {
        private RedeemCodeState _redeemCodeState = 0;
        public RedeemCodeState RedeemCodeState
        {
            get { return _redeemCodeState; }
            set
            {
                _redeemCodeState = value;
                RaisePropertyChanged(() => RedeemCodeState);
            }
        }

        public RedeemCodeViewModel(string code)
        {

            RedeemCode = code;

        }
    }

    public enum RedeemCodeState
    {
        RedeemCodeSubmit = 0,
        AudiosSelection = 1,
        Confirmation = 2
    }

这是我的ViewModel(核心):

var opp = document.querySelectorAll('a[class="F-reset"]');

我做错了什么?

1 个答案:

答案 0 :(得分:1)

值转换器旨在将可移植值转换为特定于平台的值。 MvxVisibility 是便携式的。

您需要将Visibility插件添加到Core和Droid项目中。您可以在绑定中调用多个值转换器。

 local:MvxBind="Visibility Visibility(RedeemStateToVisibility(RedeemCodeState, 0))"
  

注意:我正在使用西藏绑定语法

这会调用您的值转换器将您的代码状态转换为MvxVisibility值。我们最终调用Visibility值转换器将其转换为Android可见性值。