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 :

[MVVM] passer une valeur dans une Command


Sujet :

Windows Presentation Foundation

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
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut [MVVM] passer une valeur dans une Command
    Bonjour, bonjour, c'est encore moi :p

    Voila tout est dans le titre, j'aimerai faire passer une valeur dans une Command qui me servirai plusieurs fois

    Par exemple au lieu de faire ca:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <button1 Command="{Binding Test1}" />
    <button2 Command="{Binding Test2}" />
    <button3 Command="{Binding Test3}" />

    faire ca
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <button1 Command="{Binding Test}" />
    <button2 Command="{Binding Test}" />
    <button3 Command="{Binding Test}" />

    et donc dans mon MVVM, le relayCommand appelle 2 méthode, la première forcement CanClick() et la seconde qui ressemblerai a ca Click(monText)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private static void Click(string monText)
    {
       MessageBox.Show(monText);
    }
    pour m'afficher en résultat une messageBox m'indiquant sur quel bouton j'ai cliquer.

    Bien sur, est ce que cela est-il réalisable???

    Merci beaucoup

  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 : 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
    Il faut utiliser CommandParameter :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Button Command="{Binding Test}" CommandParameter="text1" />
    <Button Command="{Binding Test}" CommandParameter="text2" />
    <Button Command="{Binding Test}" CommandParameter="text3" />

    Perso, je préfère utiliser DelegateCommand que RelayCommand, il y a une version générique DelegateCommand<T> qui permet d'indiquer le type du paramètre:

    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
    private DelegateCommand<string> _test;
    public ICommand Test
    {
        get
        {
            if (_test == null)
            {
                _test = new DelegateCommand<string>(Click);
            }
            return _test;
        }
    }
     
    private static void Click(string monText)
    {
       MessageBox.Show(monText);
    }
    Au fait, normalement on évite de faire un MessageBox.Show dans un ViewModel, parce que ça introduit une dépendance forte sur le moteur d'UI, et on ne peut plus faire de tests unitaires sur le ViewModel. Il y a pas mal de solutions pour éviter de le faire directement, par exemple via un "service" ou un Mediator

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut
    Bingo ca marche nikel ^^
    merci beaucoup

    Au fait, normalement on évite de faire un MessageBox.Show dans un ViewModel, parce que ça introduit une dépendance forte sur le moteur d'UI, et on ne peut plus faire de tests unitaires sur le ViewModel. Il y a pas mal de solutions pour éviter de le faire directement, par exemple via un "service" ou un Mediator
    MessageBox je ne l'utilise que pour tester si ca passe bien la ou il faut ^^.

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

Discussions similaires

  1. Comment passer la valeur d'une cellule dans une macro
    Par senacle dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/06/2018, 15h34
  2. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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