Comment puis-je utiliser RelayCommand dans wpf?

Comment puis-je utiliser RelayCommand dans RelayCommand ?

La commande de relais n’existe pas dans WPF, c’est juste une classe externe qui a pris de l’importance après avoir été définie dans cet article MSDN . Vous devez l’écrire vous-même si vous souhaitez l’utiliser.

Sinon, vous pouvez utiliser la commande Delegate à partir de la boîte à outils WPF , qui a 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 commande RelayCommand telle que définie ci-dessus, vous devez lui fournir un ou deux delegates, un qui renvoie un booléen qui détermine si la commande est dans un état valide et une seconde qui ne renvoie rien et exécute le commander. Si vous ne fournissez pas de délégué “CanRun”, la commande considérera qu’il 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 en tant que test de validité. Lorsque cette commande est liée à un bouton dans WPF, la propriété IsEnabled du bouton correspond à la propriété CanSave du ViewModel et lorsque l’utilisateur clique sur le bouton (en supposant qu’il soit activé), la méthode Save () sera appelée sur le ViewModel.

Au lieu de créer des wrappers RelayCommand pour toutes vos méthodes, puis-je suggérer une bibliothèque et une source gratuites qui vous permettront d’utiliser la liaison {BindTo Save()} . Je l’ai créé pour simplifier mes liaisons. Cela rend aussi la liaison relative beaucoup plus facile. Vous pouvez le trouver ici: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html