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 :

Comportement de command cassé si plusieurs méthodes [MVVM]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut Comportement de command cassé si plusieurs méthodes
    Bonjour à tous,

    J'ai une fenêtre popup qui, lorsqu'on clique sur son bouton valider doit :
    - Faire la commande Save().
    - Se fermer (si Save n'a pas renseigné la propriété globale MsgErr);

    En gros, j'ai ça dans mon code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            private void btnVal_Click(object sender, RoutedEventArgs e) {
                if ((dpStart.SelectedDate != null)) {
                    m.SaveCommand.Execute(null);
                    if (string.IsNullOrEmpty(m.msgErr)) {
                        BtnCloseClick(this, e);
                    }
                } else
                    SetMsgMain(resMain.msgAllFieldsKo);
            }
    Je voulais faire du propre et mettre ça dans le Xaml pour bénéficier des automatismes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    <Button x:Name="btnVal" Content="{x:Static resx:resMain.lblVal}" Style="{StaticResource btnStandardClr}">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <mvvm:EventToCommand Command="{Binding SaveCommand}"/>
                                <ei:CallMethodAction MethodName="btnVal_Click" TargetObject="{Binding ElementName=ucProSttEdit}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </Button>
    Ca fonctionne, mais Seulement, les comportement Raise (bouton désactivé et textbox en rouge si vides) ne se font poas.
    Ils se font bien si je ne met que le EventToCommand, mais pas s'il y a aussi le CallMethodAction dans le EventTrigger.

    Comment faire ça proprement ?

    Merci d'avance.
    David.

  2. #2
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bon, j'ai une astuce.
    Ca ne résoud pas le problème du multiple Command, mais ca m'a parmis de tout mettre dans le même command :

    Dans le ViewModel, déclarer une action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            /// <summary>Action sur lequel brancher l'Evenement "fermer" de la fenêtre d'édition.</summary>
            public Action CloseAction { get; set; }
    Puis, dans le command du Save(), exécuter cette action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            void Save() {
                ....
                if (CloseAction != null) CloseAction();
            }
    Dans La vue, instancier l'action dans le constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                vm.CloseAction = new Action(this.Close); // Pour fermer depuis le vm.
    Et dans cette vue, déclarer la méthode de fermeture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            private void Close() {
                Self.Close();
            }
    David.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/07/2019, 12h11
  2. Réponses: 4
    Dernier message: 29/02/2012, 15h42
  3. Feuillage plusieurs méthode ? (voir photo)
    Par supergrey dans le forum DirectX
    Réponses: 25
    Dernier message: 30/04/2008, 15h48
  4. Thread: proposer plusieurs méthodes execute?
    Par Gaadek dans le forum Delphi
    Réponses: 6
    Dernier message: 15/03/2007, 23h16
  5. Plusieurs formulaires dans un fichier avec plusieurs méthodes post
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2006, 15h04

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