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 :

WPF MVVM Object vide


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
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Par défaut WPF MVVM Object vide
    Bonjour,

    Je suis en archi MVVM et j'utilise event aggragator.
    Mon soucis est la suivant :
    Sur un page 1 (par exemple) je sélectionne un object sur la page. J'appel cet object SelectObject.
    Grace à Event aggregator je passe l'object dans une autre view model, VM2. Le fonctionnement est correct hormis QUE ca marche seulement après le premier passage.
    1. Selection de l'object dans Page1 bindé avec VM1.
    2. EventeAggregator transmet l'object à VM2
    3. Page 2 affiche selectObject bindé avec VM2

    Le process marche qu'à partir de la deuxième sélection.
    Je ne vois pas pourquoi j'ai ce pb, j'ai modifié un peu tout dans mon code mais rien ne change, j'ai toujours besoin de faire un premier clic pour "initialiser" et ensuite tout fonctionne correctement.

    Y a t'il une piste ?

  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
    Sans voir le moindre code ça va être difficile de deviner ce qui ne va pas...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Par défaut
    Dans ma VM1 :

    Mon constructeur possède :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OuvrirCommandeCommand = new DelegateCommand<Commande>(OuvrirCommande);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private IEventAggregator messageBus;
    private void OuvrirCommande(Commande Command)
     {
    messageBus.GetEvent<SelectedCommandeEvent>().Publish(SelectedCommande);
    }
    La solution contient la classe :
    SelectedCommandeEvent.cs avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectedCommandeEvent : CompositePresentationEvent<Commande>
    Dans la VM2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    messageBus.GetEvent<SelectedCommandeEvent>().Subscribe(maCommande);
     
    public void maCommande(Commande commande)
    {            
     SelectedCommande = commande;
    }
    Merci

  4. #4
    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
    Tu es sûr que le VM2 est déjà abonné à l'évènement la première fois que tu le publies ?

    Essaie de déboguer pas à pas en mettant un breakpoint dans OuvrirCommande. Est-ce qu'il passe bien dans cette méthode la première fois ? Si ce n'est pas le cas, le problème n'est pas au niveau de l'EventAggregator...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Par défaut
    J'ai fait le test et oui je passe bien dans ouvrirCommande dès le premier passage.

  6. #6
    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
    OK... Donc pour une raison ou une autre, VM2 ne doit pas encore être abonné à l'évènement la première fois qu'il est déclenché. A quel moment t'abonnes-tu à l'évènement ? Dans le constructeur de VM2 ? Et à quel moment VM2 est-il instancié ?

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

Discussions similaires

  1. [WPF - MVVM] Communications entre ViewModels
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 06/02/2012, 14h06
  2. Enum dans un combobox WPF MVVM
    Par july4474 dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 22/11/2011, 21h44
  3. [WPF][MVVM] GridView bindé un ReadOnlyCollection
    Par Monkey56 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 07/09/2010, 10h58
  4. [C#/WPF] MVVM envoie d'information au ViewModel
    Par Monkey56 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 01/09/2010, 15h01
  5. [BO 6.1] Objects Vides
    Par charles_mourot dans le forum Designer
    Réponses: 1
    Dernier message: 05/12/2007, 13h23

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