我是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,那么应该禁用按钮。我哪里错了?
希望我没有推动这个,但我可以添加额外的绑定,以便如果它被禁用或启用我可以更改按钮的颜色?
答案 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"