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 :

Mettre un objet radiobutton en command parameter


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 53
    Par défaut Mettre un objet radiobutton en command parameter
    Salut

    Je voulais savoir si c'est possible de créer une commande qui vienne changer l'état d'un autre élément sur un control WPF.
    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Radiobutton x:name="RD"/>
     
    <Button command="change_etat_bouton"
                commandparameter="RD"/>
    ou le bouton change par exemple l'état Ischeched du Radiobouton.

    Je pose cette question car ca ne me parait pas évident que le code de la commande puisse accéder directement a RD.IsChecked

    Merci

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    Salut,

    en fait, ce n'est pas la bonne logique, ou en tout cas voici comment je ferai (je travaille en mvvm)
    - ton bouton radio doit avoir un binding sur une donnée dans le viewmodel qui indique s'il est sélectionné
    - ta commande doit être instanciée dans ton viewmodel
    - lorsque tu instancie ta commande, tu passes ton viewmodel en paramètre afin que la commande puisse accéder à la propriété sur laquelle ton bouton radio est bindé

    edit : autre solution plus simple que je viens de tester
    pour passer en paramètre le RadioButton comme tu veux le faire, il faut faire un binding comme cela :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandParameter="{Binding ElementName=RD}"
    par contre je te conseille de mettre des noms plus explicites et plus longs
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 53
    Par défaut
    Merci de ta réponse

    Effectivement quand j'ai posé ma question j'avais dans l'idée que la bonne manière ressemblait à ce que tu dis , en MVVM et avec un binding sur une donnée ou un datacontext.

    par contre , tu me dis que je met la viewmodel en parameter et dans ton edit, le nom du composant a modifier (ici RD).

    - si c'est le view model , je ne lui précise pas que c'est RD que je veux modifier donc il manque quelquechose (vu que je veux que la même commande puisse fonctionner pour RD1 RD2 etc...)

    - si c'est RD , comment est ce que ca fonctionne ? c'est possible de caster
    le paramètre d'entrée en radiobutton et on renvoie un booléen , comme un converter ?

    Je ne suis pas un expert des commandes, je vais chercher avec ce que tu m'as dis, je veux déja savoir si c'est possible avant de me plonger plus dans le fonctionnement des commandes.

    par contre je te conseille de mettre des noms plus explicites et plus longs
    pas de soucis c'est juste pour l'exemple

  4. #4
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    en fait, à partir du moment où il faut éviter d'utiliser des objets type UI dans le view model, je te conseille plutot la seconde solution qui a le mérite d'être plus simple à mettre en place (voir mon edit à mon post précédent)
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Je te conseille de faire un truc comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Radiobutton x:name="RD" IsChecked="{Binding RbIsChecked}" />
     
    <Button command="change_etat_bouton" />
    Et dans ton VM:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public bool RbIsChecked
    { ...}
    Comme ca, tu n'as pas de lien entre ton VM et un objet graphique: dans ton VM, tu changes juste la valeur de RbIsChecked et ca coche/décoche ton RadioButton

Discussions similaires

  1. mettre a jour la ligne commande du linker! (GCC)
    Par moon93 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 01/06/2006, 10h27
  2. Mettre un objet utilisant COM dans un vecteur
    Par 0xYg3n3 dans le forum MFC
    Réponses: 7
    Dernier message: 18/04/2005, 15h50
  3. [Struts][classe Action]Mettre un objet en parametre (suite)
    Par julienOriano dans le forum Struts 1
    Réponses: 6
    Dernier message: 16/06/2004, 15h54
  4. Mettre un objet dans un TListView
    Par FredericB dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/04/2004, 09h32
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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