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 et Binding d'objets contenant des listes d'objets


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 11
    Points
    11
    Par défaut MVVM et Binding d'objets contenant des listes d'objets
    Bonjour,

    J’ai un souci de binding MVVM par rapport à des objets contenant des objets.
    J’ai recherché sur le forum, soit il n’y a rien, soit je suis passé à côté.

    Je possède une liste d’objets « Etudiant ». Cette classe possède des propriétés classiques de type string, int (nom, age) etc… mais aussi des propriétés plus complexes sous fromes de liste d'objets.
    Dans notre exemple nous allons dire List<Cahier> ou la classe Cahier possède un certain nombre d’attributs (nombre de pages, matière, type de carreaux ...).

    Ce que j’aimerais faire c’est un grid qui affiche la liste des étudiants, et juste en dessous de ce grid un grid qui affiche l’ensemble des cahiers de l’étudiant en fonction de l’étudiant selectionné.

    Nous avons donc

    dans le xaml View
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <DataGrid ItemsSource="{Binding Path=EtudiantList}" />
    Dans le c# ViewModel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private List<Etudiant> _etudiantList;
    public List< Etudiant > EtudiantList
    {
    get { return _ etudiantList; }
           set
           {
           	this._ etudiantList = value;
           }
    }
    Je veux donc rajouter un deuxième Datagrid juste en dessous qui en fonction de l’étudiant sélectionné va me donner la liste des cahiers.
    Etudiant possède un attribut de type List<Cahier>.
    Et la c’est le drame, je n’ai aucune idée pour réaliser cela. Ni dans la vue, ni dans la classe vue-Model.

    Quelqu’un pourrait il m’aider ?
    Merci d’avance.

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Tu peux binder le SelectedItem de la première DataGrid au DataContext de la seconde et enfin binder la propriété "Cahiers" à l'ItemsSource.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Points : 130
    Points
    130
    Par défaut
    Si un étudiant possède une liste de cahiers, alors tu peux regarder les relations master/détail (tu as un exemple sur ce site)

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos réponses.

    Du coup j'ai obtenu un code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <DataGrid x:Name="listeEtudiant" 
                  ItemsSource="{Binding Path=etudiantList}" />
     
    <DataGrid DataContext="{Binding ElementName=listeEtudiant, Path=SelectedItem}"
                  ItemsSource="{Binding Path=MesCahiers}" />
    Si vous avez des remarques, suggestions n'hésitez pas.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Points : 130
    Points
    130
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <DataGrid DataContext="{Binding SelectedEtudiant}"
                  ItemsSource="MesCahiers"
                      />
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Etudiant SelectedEtudiant{
    	get{ return this.listeEtudiant.SelectedItem ; }
    }
    Ou un truc du genre

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Arsenic68 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <DataGrid DataContext="{Binding SelectedEtudiant}"
                  ItemsSource="MesCahiers"
                      />
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Etudiant SelectedEtudiant{
    	get{ return this.listeEtudiant.SelectedItem ; }
    }
    Ou un truc du genre
    euh ... J'ai édité mon message précédent !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/08/2010, 17h21
  2. Réponses: 3
    Dernier message: 19/07/2010, 08h42
  3. Ajout de Node a partir d'objet contenant une liste d'objet
    Par Al_Bundy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/08/2008, 14h35
  4. Réponses: 2
    Dernier message: 29/05/2008, 15h59
  5. [castor] MappingTool objet contenant des list
    Par totoranky dans le forum Persistance des données
    Réponses: 1
    Dernier message: 28/03/2007, 17h48

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