Débogage de CanExecute de CommandBinding
-
05-07-2019 - |
Question
J'ai un contrôle utilisateur avec un bouton
lié ??au NavigationCommands.RefreshCommand
. Le gestionnaire de la commande est dans le contrôle parent. Le CanExecute
du gestionnaire ressemble à ceci:
e.CanExecute = !IsConnecting; // IsConnecting is a Dependency Property
Pour une raison quelconque, le bouton
restera désactivé jusqu'à ce que je clique sur la fenêtre.
Si je clique sur le bouton
et que je l'exécute (ce qui provoque temporairement la définition de IsConnecting
), il désactivera le bouton correctement, mais ne le fera pas. activez le bouton jusqu'à ce que je provoque un autre événement dans la fenêtre (par exemple, un clic).
Existe-t-il des outils ou des astuces que je peux utiliser pour essayer de déboguer le gestionnaire CanExecute d'une commande liée à un bouton?
La solution
CanExecute du bouton est appelé uniquement lorsque quelque chose se passe dans l'interface graphique. Comme IsConnecting change en arrière-plan, WPF ne met pas à jour le contrôle.
Pour forcer WPF à mettre à jour l'appel CanExecute CommandManager.InvalidateRequerySuggested