40 votes

Comment puis-je utiliser le RelayCommand dans wpf ?

Comment puis-je utiliser le RelayCommand dans wpf ?

51voto

Martin Harris Points 18057

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.

7voto

luisperezphd Points 3220

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X