2009-06-15 6 views
1

Lors de l'exécution d'une commande RoutedUICommand manuellement à partir du code-behind, comme ceci:exécution WPF routé manuellement les commandes

MyCommands.MyCommand.Execute(parameter, target) 

dois-je appeler la méthode CanExecute première ou est-ce déjà fait dans la méthode Execute?

Répondre

10

Ne supposez pas que CanExecute sera appelé avec Execute. L'interface pour ICommand n'implique pas qu'il appelle CanExecute quand Execute est appelé, donc s'il est important pour vous qu'il ne s'exécute que lorsque CanExecute est vrai, vérifiez-le vous-même.

En outre, en analysant le code décompilé pour RoutedUICommand, je ne vois nulle part qui vérifie CanExecute dans Execute.

Il est vraiment plus important pour le consommateur de déterminer quand appeler Execute/CanExecute.

1

Vous devriez appeler CanExecute manuellement si vous avez besoin, Execute ne le vérifie pas!

0

Vous ne devez pas supposer que CanExecute est appelée par la méthode Execute, car il n'y a rien pour appliquer ce comportement. Donc, OMI, vous devriez appeler CanExecute vous-même

Questions connexes