2017-10-21 82 views
0

我是新来MVVMCross框架,Android和有如何启用/禁用按钮的麻烦。我无法在这个区域找到文档。 MVVMCross Android的按钮使

代码视图模型:

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

但愿我不会推动这一点,但我可以添加额外的约束它,因此,如果它被禁用或启用我可以改变按钮的颜色?

回答

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);内你的EmailLogin属性的设置者。

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

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

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

+0

谢谢你,它一直:d。我的EmailLogin的RaisePropertyChange被设置为自己(EmailLogin)。感谢有关颜色的其他信息。你会如何设定颜色?它是否使用整数RGB实例化MyColor? –

+0

太棒了!是的,你可以使用RGB实例化一个,或者你可以找到一些预定义的颜色,比如'MvxColors.Red'。确保你的方式对你的核心和平台项目安装包:) – nmilcoff

+0

优秀的,谢谢老兄:)只注意到你的XML绑定,它指出TEXTCOLOR MyColor,如果它的backgroundColor而不是TEXTCOLOR会是简单的地方:MvxBind = “启用ButtonEnabled; BackgroundColor MyColor” –