134 votes

WPF - comment forcer une commande de ré-évaluer ' CanExecute ' via son CommandBindings

J'ai un Menu où chaque MenuItem dans la hiérarchie a ses Command ensemble de propriétés pour un RoutedCommand j'ai défini. L'associée CommandBinding fournit une fonction de rappel pour l'évaluation de l' CanExecute qui contrôle l'état activé de chaque MenuItem.

Ce presque œuvres. Les éléments de menu d'arriver à la bonne activé et désactivé. Toutefois, lorsque les données que mes CanExecute de rappel utilise les changements, j'ai besoin de la commande de re-demande à la suite de mon rappel à l'ordre pour que ce nouvel état d'être reflété dans l'INTERFACE utilisateur.

Il ne semble pas y avoir de méthodes publiques sur RoutedCommand ou CommandBinding pour cette.

Notez que le rappel est utilisé à nouveau quand je cliquez ou tapez sur la commande (je suppose que c'est déclenché sur l'entrée, car le passage de la souris ne cause pas de l'actualiser).

175voto

Arcturus Points 14366

Pas la plus jolie dans le livre, mais vous pouvez utiliser le CommandManager à invalider tous les commandbinding :

Voir plus d’informations sur MSDN

84voto

CodingWithSpike Points 17720

Pour quelqu'un qui vient à travers ce plus tard ; S’il vous arrive d’utiliser MVVM et prisme, puis de prisme application de fournit une `` méthode pour ce faire.

30voto

anvarbek raupov Points 2555

Je ne pouvais pas utiliser `` parce que je devenais baisse de performance.

J’ai utilisé du MVVM HelperDelegating commande, qui ressemble à ci-dessous (j’ai peaufiné un peu pour notre req). vous devez appeler `` de VM

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X