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 :

Problème avec la mise à jour d'un ObservableCollection [MVVM]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut Problème avec la mise à jour d'un ObservableCollection
    Bonjour à tous,
    Je dois gérer une liste de clients où l'on peut lier un, voir plusieurs contacts.
    J'utilise 2 Views et ViewModels différents pour la création du client et la création d'un contact.
    Sur la View de création du client, j'ai un bouton "Ajouter un contact" qui me permet d'arriver sur la View de création du contact.
    Lorsque tous les champs du contact sont remplis, j'envoie à travers le Messenger, le token Contact (et je m'inscris au Messenger côté client ViewModel).
    Voici les codes simplifiés :
    Côté NewContactViewModel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     private void ExecuteConfirmCommand() //executer lorsque je confirme la fiche contact
            {
                Messenger.Default.Send(CurrentContact); //le contact à ajouter class : ContactDTO
                Messenger.Default.Send(NavigationActionEnum.NewClientView); //je retourne sur le NewclientViewModel
            }
    Côté NewClientViewModel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public NewClientViewModel()
            {
                    Messenger.Default.Register<ContactDTO>(this, OnContactReception);
            }
     
    private void OnContactReception(ContactDTO contact)
            {
                ContactsCollection.Add(contact);
            }
    Mon code ajoute bien les données mais le problème, c'est que lorsque je rajoute plus d'un contact au client, il écrase le contact précedent.
    Par exemple :
    J'ajoute Alain puis Pierre, je me retrouve avec Pierre 2 fois (et si je rajoute un autre par après, je me retrouve avec le même 3 fois).

    Est-ce que j'utilise mal le Messenger ?

    Merci de m'avoir lu jusqu'ici et merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut
    Problème résolu !
    En fait j'avais un problème dans la logique de construction de mon programme :
    Dans mon ViewModelLocator, je créais des instances de mes ViewModels et je faisais pareil dans mon MainViewModel. Du coup chacun de mes ViewModels était doublé et ça créait des problèmes assez étrange par moment ... Mais maintenant tout marche comme il faut

    Pour ceux que ça intéressent (puis n'hésitez pas à donner votre avis sur ma solution)
    J'ai un ViewModelLocator principal (celui fournit par défaut par MVVM Light)
    Celui-ci va localiser les ViewModels des différents fenêtres.
    Chacune de ces fenêtres possède son ViewModel (par exemple MainViewModel) qui va s'occuper de localiser les différents ViewModels dépendant de ce Shell (et d'agir par conséquent comme un ViewModelLocator secondaire).

    Voici en gros la construction :

    ShellLocator
    ----- MainViewModel (Locator secondaire)
    ----------- ClientsViewModel (page d'affichage de tous les clients)
    ----------- NewClientViewModel (page d'ajout d'un nouveau client)
    ----------- NewContactViewModel (page d'ajout d'un contact)
    ----- ConfigurationViewModel (Locator secondaire)
    ----------- OptionViewModel (page d'option)
    ----------- etc ...

    PS : je ne marque pas toute suite mon topic comme résolu pour pouvoir avoir quelques avis sur mon approche.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/03/2014, 09h50
  2. Réponses: 7
    Dernier message: 14/06/2010, 10h23
  3. Réponses: 4
    Dernier message: 17/03/2009, 12h25
  4. Problème avec ma mise à jour
    Par gorgonite dans le forum Ubuntu
    Réponses: 17
    Dernier message: 04/05/2007, 17h03
  5. [FEDORA] Problème avec la mise à jour du kernel
    Par Davidbrcz dans le forum RedHat / CentOS / Fedora
    Réponses: 4
    Dernier message: 23/02/2007, 10h58

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