IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Command dans MVVM : un peu de mal à situer [Fait]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Command dans MVVM : un peu de mal à situer
    Bonjour à tous,

    Je suis actuellement en train d'essayer de comprendre les commandes. C'est vraiment pas évident de saisir la véritable utilité (mais je sais qu'il y en a une, le tout c'est que je capte le truc :p )

    Pour le moment, ce que j'ai compris, c'est que l'on peut ajouter une commande sur un controle.
    Cette commande, permet d'executer une action (et eventuellement filtrer la possibilité d'executer via la methode can_execute).
    L'interet de la commande est de séparer le fonctionnel de la présentation : on met à disposition des commandes au graphiste qui peut alors s'en servir comme il veut.

    Ma problèmatique aujourd'hui est de situer la commande dans un design patern MVVM (ou s'en rapprochant).

    Imaginons un modele dans lequel on a ce schéma :
    XAML (Vue) -> Classe de presentation (Vue-Modele) -> Classe metier (Modele)

    Je n'arrive pas trop à savoir où doivent se situer les commandes pour l'appli....
    Je dirais dans la partie Vue-Modele mais je n'en suis pas sûr.

    Je voulais donc avois vos avis sur le good practice à ce niveau là svp.
    Merci d'avance

    @bientot

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    En fait, les classes RoutedCommand et RoutedUICommand présentes dans WPF ne se prêtent pas vraiment à l'utilisation avec MVVM... A la place, on utilise souvent une classe RelayCommand (elle n'est pas dans le framework mais tu peux la trouver un peu partout), qui implémente l'interface ICommand. Dans le ViewModel, on expose des propriétés de type RelayCommand, sur lesquelles on peu binder les commandes des boutons, et c'est aussi dans le ViewModel qu'on implémente l'exécution de la commande.

    Jette un oeil à ce tuto, tout est expliqué :
    http://japf.developpez.com/tutoriels...-et-testables/
    (chapitres VI-D et VII-B)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Merci beaucoup pour ce rappel !
    J'avais lu ce tuto, mais je ne me souvenais plus de la partie sur les commandes !
    J'etudie ça

    @ bientot

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Juste une petite chose :

    Existe-t-il un moyen pour récuperer l'etat du Can_Execute d'une commande sur un autre controle que la cible ?
    Je pense en l'occurence à un cas comme ce qui suit :

    sur un xaml, on a un textbox, un bouton.
    Le bouton est lié à une commande. Donc si le can execute est à false, le bouton est désactivé.
    J'aimerai par exemple, que lorsque cette commande n'est pas executable, en plus de désactiver le bouton, pouvoir rendre le textbox rouge.
    J'ai cherché sur l'exemple du tuto MVVM, mais je ne vois que la possibilité de passer par une propriété. Je voulais donc savoir s'il etait possible de recuperer cet état sans propriété intermédiaire ?

    Merci d'avance

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Sans propriété intermédiaire, je vois pas comment ce serait possible... à moins de changer explicitement le style de la TextBox a partir du ViewModel, ce qui serait contraire aux principes de MVVM.

    Mais bon, c'est pas très compliqué à faire de toute façon... un propriété qui indique si la TextBox est renseignée, un trigger sur cette propriété, et le tour est joué

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Merci pour ton indication
    @ bientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Entrer des commandes dans une CMD
    Par narsi1 dans le forum C++
    Réponses: 16
    Dernier message: 03/03/2005, 15h10
  2. Visibilité commande dans un Menu contextuel
    Par Hamdi dans le forum IHM
    Réponses: 3
    Dernier message: 20/01/2005, 12h29
  3. Réponses: 4
    Dernier message: 02/06/2004, 11h19
  4. Ecrire le résultat d'une commande dans un fichier de l' OS
    Par Labienus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/02/2004, 11h04
  5. Ajout de bouton de commandes dans la barre de menus
    Par vanessaf22 dans le forum IHM
    Réponses: 9
    Dernier message: 21/07/2003, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo