Partager via


Désactiver une source de commande via DispatcherTimer, exemple

Mise à jour : novembre 2007

Cet exemple montre comment activer et désactiver une source de commande via un DispatcherTimer.

Les sources de commandes, telles que les classes MenuItem et Button, écoutent l'événement CanExecuteChanged sur le RoutedCommand auquel elles sont attachées afin de déterminer le moment où doivent interroger la commande pour voir si celle-ci peut s'exécuter sur la cible actuelle de la commande. Les sources de commandes vont généralement se désactiver si la commande ne peut pas s'exécuter et s'activer dans le cas contraire ; par exemple, MenuItem se grise lorsque la commande ne peut pas s'exécuter.

CommandManager notifie RoutedCommand via l'événement RequerySuggested lorsque les conditions de la cible de commande ont changé. RoutedCommand déclenche l'événement CanExecuteChanged, événement qu'écoute la source de commande. Ce mécanisme de notification est généralement approprié, mais dans certaines situations, CommandManager ne sait pas que des modifications sont intervenues sur la cible de la commande, de sorte que l'événement RequerySuggested n'est jamais déclenché et que la source de la commande n'interroge jamais RoutedCommand. Dans ces cas, CommandManager peut être forcé à déclencher l'événement RequerySuggested en appelant InvalidateRequerySuggested.

Cet exemple crée un objet RoutedCommand qui peut être exécuté uniquement lorsque le nombre de secondes de l'heure actuelle est supérieur à la valeur cible. Un DispatcherTimer appelant InvalidateRequerySuggested chaque seconde est créé. Ceci permet de s'assurer que la source de la commande reçoit l'événement CanExecuteChanged, et donc qu'il appelle la méthode CanExecute sur la commande.

Une variation de cet exemple est disponible dans l'exemple Désactiver une source de commande via une horloge système, exemple. Pour plus d'informations sur l'exécution des commandes, consultez Vue d'ensemble des commandes.

Cet exemple présente une fonctionnalité spécifique de Windows Presentation Foundation et, par conséquent, ne suit pas les meilleures pratiques de développement d'applications. Pour un traitement complet des meilleures pratiques de développement d'applications Windows Presentation Foundation (WPF) et Microsoft .NET Framework, reportez-vous, selon les cas, aux documents suivants :

Accessibilité - Meilleures pratiques d'accessibilité

Sécurité - Sécurité de Windows Presentation Foundation

Localisation - Vue d'ensemble de la globalisation et de la localisation WPF

Download sample

Génération de l'exemple

  • Installez le Kit de développement logiciel (SDK) Windows et ouvrez la fenêtre Commande de son environnement de génération. Dans le menu Démarrer, pointez sur Tous les programmes et sur Microsoft Windows SDK, puis cliquez sur CMD Shell.

  • Téléchargez l'exemple, généralement à partir de la documentation du Kit de développement logiciel (SDK), vers votre disque dur local.

  • Pour générer l'exemple à partir de la fenêtre Commande de l'environnement de génération, accédez au répertoire source de l'exemple. À l'invite de commandes, tapez MSBUILD.

  • Pour générer l'exemple dans Microsoft Visual Studio, chargez l'exemple de solution ou de fichier projet, puis appuyez sur CTRL+MAJ+B.

Exécution de l'exemple

  • Pour exécuter l'exemple compilé à partir de la fenêtre Commande de l'environnement de génération, exécutez le fichier .exe du dossier Bin\Debug ou Bin\Release contenu sous le dossier du code source de l'exemple.

  • Pour exécuter l'exemple compilé avec le débogage dans Visual Studio, appuyez sur F5.

Voir aussi

Tâches

Désactiver une source de commande via une horloge système, exemple

Concepts

Vue d'ensemble des commandes