MVVMCross Android 按钮启用

MVVMCross Android button enable

我是 Android 的 MVVMCross 框架的新手,在如何 enable/disable 按钮方面遇到了问题。我找不到有关该区域的文档。

代码视图模型:

    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,则应禁用按钮。我哪里错了?

希望我不会推动它,但我可以向它添加额外的绑定,以便在它被禁用或启用时我可以更改按钮的颜色吗?

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

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

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

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

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

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