MVVMCross Android按钮启用

时间:2017-10-21 13:55:43

标签: xamarin.android mvvmcross

我是Android的MVVMCross框架的新手,并且在如何启用/禁用按钮方面遇到了麻烦。我无法在这个区域找到相关文档。

代码ViewModel:

    private bool _buttonEnabled;
    public bool ButtonEnabled
    {
        get
        { return string.IsNullOrEmpty(EmailLogin);}
        set
        {
            _buttonEnabled = value;
            RaisePropertyChanged(() => ButtonEnabled);
        }
    }

Android axml:

 <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/Login"
    android:background="@color/yellow"
    local:MvxBind="Enabled(ButtonEnabled)"/>

但无法让它发挥作用。我想要实现的是,如果EmailLogin变量是NullOrEmpty,那么应该禁用按钮。我哪里错了?

希望我没有推动这个,但我可以添加额外的绑定,以便如果它被禁用或启用我可以更改按钮的颜色?

1 个答案:

答案 0 :(得分:2)

您只需要将绑定语法更改为:

 <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/Login"
    android:background="@color/yellow"
    local:MvxBind="Enabled ButtonEnabled"/>

我不知道你是否这样做是因为你的代码没有显示所有内容,但你还需要在RaisePropertyChanged(() => ButtonEnabled);属性的setter中调用EmailLogin

此外,如果您想更改按钮的颜色,可以安装official color plugin。用法是这样的:

private MvxColor _myColor;
public MvxColor MyColor
{
    get
    {   return _myColor; }
    set
    {
        _myColor = value;
        RaisePropertyChanged(() => MyColor);
    }
}

然后:local:MvxBind="Enabled ButtonEnabled; TextColor MyColor"