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

Silverlight Discussion :

Commande avec arguments dans une architecture MVVM


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut Commande avec arguments dans une architecture MVVM
    bonjour

    j'aimerai savoir en silverlight 3, avec mvvm, comment effectuer une commande avec plusieurs paramètres?

    dans ma couche viewModel, j'ai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #region SaveCommand
            private void CommandeAjouterPersonnel()
            {
                AjouterPersonnel = new RelayCommand(ExecuteSaveCommand);
            }
     
            public ICommand AjouterPersonnel { get; internal set; }
     
            public void ExecuteSaveCommand(int num, string nom, string prenom, string mail, string fonction)
            {
                srvPersonnelClient.ajouterPersonnelAsync(num, nom, prenom, mail, fonction);
            }
            #endregion
    mon problème est que mon new RelayCommand(ExecuteSaveCommand) ne fonctionne pas, jai
    La méthode surchargée correspondant le mieux à Galasoft.MvvmLight.Command.RelayCommand(System.Action) possède des arguments non valides
    je ne sais pas quoi mettre à mon ExecuteSaveCommand ?

    également dans ma vue, code xaml, comment appeler ce ICommand avec paramètre sur clic d'un bouton ?

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Tu peux utiliser un objet agrégeant tous les paramètres de la commande : une propriété par paramètre; puis binder les propriétés de cet objet à la view.

  3. #3
    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 : 43
    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
    Par défaut
    ICommand.Execute ne prend qu'un seul paramètre, donc la seule solution est de créer une classe qui regroupe les paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    class SaveCommandArgs
    {
        public int Num { get; set; }
        public string Nom { get; set; }
        public string Prenom { get; set; }
        public string Mail { get; set; }
        public string Fonction { get; set; }
    }
     
    ...
     
            #region SaveCommand
     
            private void CommandeAjouterPersonnel()
            {
                AjouterPersonnel = new RelayCommand<SaveCommandArgs>(ExecuteSaveCommand);
            }
     
            public ICommand AjouterPersonnel { get; internal set; }
     
            public void ExecuteSaveCommand(SaveCommandArgs args)
            {
                srvPersonnelClient.ajouterPersonnelAsync(args.Num, args.Nom, args.Prenom, args.Mail, args.Fonction);
            }
     
            #endregion

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    ok mais côté xaml comment on utilise cette méthode tout en évitant de trop écrire dans le code behind ?

  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 : 43
    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
    Par défaut
    Y a pas vraiment de moyen simple... c'est entre autres pour ça que la plupart du temps les commandes n'ont pas de paramètres, ou alors un seul. Il vaudrait mieux que tu passes rien à la commande, et que tu récupères les infos dont tu as besoin à partir des propriétés du ViewModel

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    dans ce cas mvvm n'est pas appliqué correctement aussi, car le couplage redevient fort. En plus j'ai structuré programme en couches, pas dans des dossiers mais bien dans des nouveaux projets Silverlight, et donc mon viewModel ne peut pas voir les propriétés de mes view...
    arf en fait je pense qu'avec ce bloquage je vais devoir créer ma classe d'arguments directement du code behind de ma view et faire l'appel à ma méthode une fois la classe instancié et renseigné.

    silverlight c'est bien pour faire de jolies applis, mais quelle galère je trouve quand on veux faire une appli un peu poussée niveau métier

    merci pour ces infos en tout cas

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/11/2010, 20h15
  2. envoi d argument dans une commande d un CheckButton
    Par ours_en_pluche dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/10/2009, 10h30
  3. recuperer une fonction avec arguments dans une dll
    Par freuh94 dans le forum Windows
    Réponses: 3
    Dernier message: 03/10/2009, 11h45
  4. Création fonction avec argument dans une classe
    Par Général03 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 30/06/2009, 09h57
  5. Réponses: 1
    Dernier message: 28/11/2007, 11h52

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