Question

Comment puis-je utiliser dans WPF RelayCommand?

Était-ce utile?

La solution

commande de relais n'existe pas dans WPF, il est juste une classe externe qui a soulevé à la proéminence après qu'elle a été définie dans cet article MSDN . Vous devez écrire vous-même si vous voulez l'utiliser.

Sinon, vous pouvez vous la commande délégué de la boîte à outils WPF ici qui a un peu de fonctionnalités supplémentaires sur le code RelayCommand.


Ah, la question change alors que je tapais cette réponse. En supposant que vous utilisez le RelayCommand tel que défini ci-dessus, vous devez fournir avec un ou deux délégués, qui retourne un bool qui détermine si la commande est dans un état valide pour être exécuté, et une seconde qui ne renvoie rien et fonctionne en fait la commander. Si vous ne fournissez pas un délégué « CANRUN » alors 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 un RelayCommand qui appellera la méthode lors du déclenchement et retourner la propriété CANSAVE Save () comme un 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 est activé) la méthode Save () sera appelée sur le ViewModel.

Autres conseils

Comme alternative à la création d'emballages pour tous RelayCommand vos méthodes puis-je suggérer une bibliothèque libre et la source qui vous permettra d'utiliser la liaison {BindTo Save()}. Je l'ai créé pour simplifier mes fixations. Il rend également beaucoup plus facile de liaison relative. Vous pouvez le trouver ici: http://www.simplygoodcode.com/2012 /08/simpler-wpf-binding.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top