Comment puis-je utiliser le RelayCommand
dans wpf ?
Réponses
Trop de publicités?La commande Relay n'existe pas dans WPF, il s'agit simplement d'une classe externe qui a pris de l'importance après avoir été définie dans le module de gestion de l'environnement. cet article de MSDN . Vous devez l'écrire vous-même si vous voulez l'utiliser.
Sinon, vous pouvez utiliser la commande Delegate de la boîte à outils WPF. ici qui offre un peu plus de fonctionnalités que le code RelayCommand.
Ah, la question a changé pendant que je tapais cette réponse. En supposant que vous utilisez la RelayCommand telle que définie ci-dessus, vous devez lui fournir un ou deux délégués, un qui renvoie un bool qui détermine si la commande est dans un état valide pour être exécutée, et un second qui ne renvoie rien et exécute réellement la commande. Si vous ne fournissez pas de délégué "CanRun", la commande considérera qu'elle est toujours dans un état valide. Le code utilisé dans l'article :
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave );
}
return _saveCommand;
}
}
Déclare une RelayCommand qui appelle la méthode Save() lorsqu'elle est déclenchée et renvoie la propriété CanSave comme test de validité. Lorsque cette commande est liée à un bouton dans WPF, la propriété IsEnabled du bouton correspondra à la propriété CanSave du ViewModel et lorsque le bouton est cliqué (en supposant qu'il soit activé), la méthode Save() sera appelée sur le ViewModel.
Au lieu de créer RelayCommand
pour toutes vos méthodes, puis-je vous suggérer une bibliothèque gratuite et une source qui vous permettra d'utiliser la liaison {BindTo Save()}
. Je l'ai créé pour simplifier mes liaisons. Il rend également les liaisons relatives beaucoup plus faciles. Vous pouvez le trouver ici : http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html