none
Icommand pour les nuls RRS feed

Réponses

  • Bonjour,

    Cette interface représente une commande utilisateur (souvent le clic d'un bouton). Cette interface est très utilisé avec le pattern MVVM.
    Vous devez implémenter cette interface si vous voulez associer une commande à un bouton (propriété Command du bouton).

    L'implémentation de l'interface consisite à implémenter :

    - La méthode Execute() qui exécute le code associé à la commande (impression d'un document par exemple).
    - La méthode CanExecute() qui est une méthode appelé par le moteur WPF pour savoir si l'on peut exécuté la commande (l'imprimante est disponible ?). Vous devez donc renvoyer soit true ou false si l'exécution de la commande est possible. Si vous renvoyez false, WPF va automatiquement "désactiver" le contrôle où la commande est associé (dans le cas d'un bouton, ce dernier sera automatiquement grisé).
    - L'événement CanExecuteChanged, c'est un événement qui permet de notifier à WPF que la commande peut être exécuté ou non (par exemple, vous créez un Thread qui passe son temps à surveiller l'état de l'imprimante et en cas de changement d'état, vous déclenchez cette commande).

    Est-ce plus limpide pour vous ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 22 mars 2012 07:54
    Modérateur
  • Oui,

    Classiquement le click sur un bouton appelle directement une action sous forme de code mais souvent c'est un peu compliqué que cela.

    L'idée est qu'une commande devienne un objet à part entière pour pouvoir la manipuler comme on veut dans tous ses aspects (avec la méthode qui permet de l'exécuter, celle qui permet d'indiquer si elle est actuellement activable ou non avec l'évènement qui permet d'indiquer ce changement d'état etc...) plutôt que d'être un simple appel de code.

    Voir http://msdn.microsoft.com/fr-fr/library/ms752308.aspx qui semble un bon point de départ. Après rien ne vaut peut-être un petit projet pour tester ce concept. Voir par exemple : http://www.codeproject.com/Articles/36545/WPF-MVVM-Model-View-View-Model-Simplified (en anglais) qui me semble pas mal pour commencer.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    samedi 24 mars 2012 14:12

Toutes les réponses

  • Bonjour,

    Cette interface représente une commande utilisateur (souvent le clic d'un bouton). Cette interface est très utilisé avec le pattern MVVM.
    Vous devez implémenter cette interface si vous voulez associer une commande à un bouton (propriété Command du bouton).

    L'implémentation de l'interface consisite à implémenter :

    - La méthode Execute() qui exécute le code associé à la commande (impression d'un document par exemple).
    - La méthode CanExecute() qui est une méthode appelé par le moteur WPF pour savoir si l'on peut exécuté la commande (l'imprimante est disponible ?). Vous devez donc renvoyer soit true ou false si l'exécution de la commande est possible. Si vous renvoyez false, WPF va automatiquement "désactiver" le contrôle où la commande est associé (dans le cas d'un bouton, ce dernier sera automatiquement grisé).
    - L'événement CanExecuteChanged, c'est un événement qui permet de notifier à WPF que la commande peut être exécuté ou non (par exemple, vous créez un Thread qui passe son temps à surveiller l'état de l'imprimante et en cas de changement d'état, vous déclenchez cette commande).

    Est-ce plus limpide pour vous ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 22 mars 2012 07:54
    Modérateur
  • Bonjour,

    Dans la théorie je comprends mais l'utilisation est encore abstraite car je ne maîtrise pas encore MVVM.

    Si je pense qu'en XAML où on a un évènement Click avec son code-behind directement dans le .xaml.cs. En MVVM on utiliserai alors Icommand pour utiliser une action dans le VueModel ?

    jeudi 22 mars 2012 09:36
  • Oui,

    Classiquement le click sur un bouton appelle directement une action sous forme de code mais souvent c'est un peu compliqué que cela.

    L'idée est qu'une commande devienne un objet à part entière pour pouvoir la manipuler comme on veut dans tous ses aspects (avec la méthode qui permet de l'exécuter, celle qui permet d'indiquer si elle est actuellement activable ou non avec l'évènement qui permet d'indiquer ce changement d'état etc...) plutôt que d'être un simple appel de code.

    Voir http://msdn.microsoft.com/fr-fr/library/ms752308.aspx qui semble un bon point de départ. Après rien ne vaut peut-être un petit projet pour tester ce concept. Voir par exemple : http://www.codeproject.com/Articles/36545/WPF-MVVM-Model-View-View-Model-Simplified (en anglais) qui me semble pas mal pour commencer.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    samedi 24 mars 2012 14:12