Bouton d'activation et DelegateCommand
Comment puis-je désactiver un Button
jusqu'à ce que les données nécessaires sont inscrits dans un TextBox
?
Je suis de la liaison d'un Button
à un ICommand
:
public ICommand LoginCommand
{
get
{
if (_loginCommand == null)
{
_loginCommand = new DelegateCommand<string>(this.Login, this.IsValid);
}
return _loginCommand;
}
}
en XAML comme ceci:
<Button Style="{StaticResource LoginButton}" Content="Login" Command="{Binding LoginCommand}" CommandParameter="{Binding Text, ElementName=txtUserName}" />
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin de lever l'actualisation de l'événement. C'est facile avec un DelegateCommand. Voici comment votre ViewModel aurait l'air.
Aussi, si il n'y a pas de raison convaincante pour faire de votre propriété de type DelegateCommand, alors vous devriez le faire.
C'est assez bien.
Où est
DelegateCommand
défini? Vérifier le constructeur, il est probablement attendre le second paramètre à un prédicat, le résultat de ce qui est tracé pour votreICommand
'sCanExecute
.Je suppose que
this.IsValid
est un délégué de la méthode qui retourne true si la chaîne.Length > 0 pour le paramètre de Commande vous êtes de passage à partir de la Vue... Essayez de toujours retourner false juste pour vérifier l'INTERFACE utilisateur est de désactiver le bouton.EDIT:
Pour obtenir les param dans la méthode IsValid, utilisez la syntaxe suivante:
modifier la syntaxe de la méthode IsValid à accepter un paramètre de chaîne, puis decalre votre DelegateCommand comme:
HTH 🙂