L'utilisation de commandes est pratique car WPF désactive automatiquement la source de la commande (généralement un bouton) lorsque la commande ne peut pas être exécutée.Désactivation des contrôles basés sur les liaisons de commande/commande WPF
Évidemment, cette fonctionnalité n'est pas disponible pour les commandes qui ne sont pas une source de commande, par ex. ListBox
.
Quelle est la meilleure façon d'activer cette fonctionnalité pour les contrôles de source sans commande. Je pensais à deux solutions:
- Enroulez le
ListBox
avec unButton
et changer laControlTemplate
du bouton pour qu'il n'y ait pas de chrome. - Créer un invisible
Button
et lier la propriétéIsEnabled
duListBox
à la propriétéIsEnabled
duButton
- Créer un descendant de
ListBox
qui implémenteICommandSource
.
Existe-t-il un moyen plus élégant?
Merci pour la réponse. D'où vient la méthode CanExecute? –
Je fais référence à la méthode ICommand.CanExecute (http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.canexecute.aspx) utilisée par WPF pour déterminer si la commande peut être exécuté ou non. –
J'ai compris. Alors, qui appelle ICommand.CanExecute. Si la commande est attachée à un bouton, WPF fait le travail (mon point # 2). Sinon, comment cela fonctionnerait-il? –