2017-10-21 74 views
0

Je suis nouveau au cadre MVVMCross pour Android et avoir des problèmes sur la façon d'activer/désactiver un bouton. Je n'ai pas pu trouver de documentation autour de cette zone. MVVMCross bouton Android activer

code 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)"/> 

Mais incapable de le faire fonctionner. Ce que j'essaye de réaliser est que si la variable d'EmailLogin est NullOrEmpty alors le bouton devrait être désactivé. Où vais-je mal?

Espérons que je ne pousse pas cela mais puis-je ajouter une liaison supplémentaire pour que si elle est désactivée ou activée, je peux changer la couleur du bouton?

Répondre

2

il vous suffit de modifier la syntaxe de liaison à ceci:

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

Je ne sais pas si vous le faites parce que votre code ne montre pas tout, mais vous aurez aussi besoin d'appeler à l'intérieur RaisePropertyChanged(() => ButtonEnabled); le setter de votre propriété EmailLogin. Si vous voulez changer la couleur de votre bouton, vous pouvez installer le official color plugin. Utilisation serait quelque chose comme ceci:

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

Et puis: local:MvxBind="Enabled ButtonEnabled; TextColor MyColor"

+0

Merci, il a travaillé: D. Mon RaisePropertyChange pour EmailLogin a été mis à lui-même (EmailLogin). Merci pour les informations supplémentaires en ce qui concerne la couleur. Comment définiriez-vous la couleur? Instancie-t-elle MyColor avec RGB entier? –

+0

Super! Oui, vous pouvez en instancier un en utilisant RGB ou vous pouvez trouver des couleurs prédéfinies comme 'MvxColors.Red'. Assurez-vous d'installer le paquet sur vos projets Core et Platform en passant :) – nmilcoff

+0

Excellent, Merci mec :) juste remarqué votre lien xml, il indique TextColor MyColor, si son backgroundColor plutôt que TextColor serait-il simplement local: MvxBind = "Enabled ButtonEnabled; BackgroundColor MyColor" –