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 :

Binding d'une liste


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
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut Binding d'une liste
    Bonjour,

    Me voici devant une problématique.
    Je vous explique.

    J'ai une liste de créneaux que je souhaiterais afficher dans un listView tous les créneaux entre 2 dates. Aucun soucis de binding pour les champs de base de type (String, int, ...). Mais le problème c'est quand il y a une liste (Pour un créneau, il peut y avoir plusieurs personnes)

    Voici la DTO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class CreneauDTO
        {
            public Decimal MapKey  { get; set; }
            public DateTime HeureDebut { get; set; }
            public DateTime HeureFin { get; set; }
            public String Reservation { get; set; }
            public List<decimal> Occupants { get; set; }
    }
    Ensuite j'ai la classe PanierViewControl.xaml.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /// <summary>
        /// Logique d'interaction pour PanierViewControl.xaml
        /// </summary>
        public partial class PanierViewControl : UserControl
        {
            private IProvider _Provider;
            private List<CreneauDTO> _panier;
     
            public PanierViewControl(IProvider provider)
            {
                this._Provider = provider;
                InitializeComponent();
                this._panier = this._Provider.ReadAll()
                this.ListPanier.ItemsSource = this._panier;
            }
    et enfin la partie xaml, je zappe tout le debut qui n'est pas très interessant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <ListView x:Name="ListPanier" Background="#FFF9E2B3" Margin="5">
                    <ListView.View>
                        <GridView AllowsColumnReorder="true">
                            <GridViewColumn DisplayMemberBinding="{Binding Path=Reservation}" Header="Reservation " Width="100" />
                            <GridViewColumn DisplayMemberBinding="{Binding Path=MapKey}" Width="32" Header="id" />
                            <GridViewColumn DisplayMemberBinding="{Binding Path=Occupants}" Width="170" Header="Personnes" />
                        </GridView>
                    </ListView.View>
                </ListView>
    Le résultat c'est que la 3eme colonne est une collection donc ça affiche un joli Collection...

    Comment peut-on faire pour afficher le détail de la liste dans la colonne . (genre { Pierre, Paul, Jacques } ) ou peu importe mais pas collection :p

    J'ai bien pensé à une classe externe, je sais plus le nom POCO ?(gros doute ?)
    Mais je ne sais si c'est correct. Pouvez-vous m'éclairer svp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Creneau
        {
            public CreneauDTO data;
     
            public Creneau(CreneauDTO dto){ this.data = dto;}
     
            public String Occupant { get { return "trucmuche"; } }
            public String Reservation { get { return data.Reservation; } }
            public String ID { get { return data.MapKey.toString(); } }
        }

  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 : 44
    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
    La classe CreneauDTO ne me semble pas très adaptée pour être affichée directement... D'ailleurs, vu son nom elle n'est pas faite pour ça (vu qu'un DTO sert à transmettre des données entre des applications ou entre les couches d'une application).

    Le plus simple serait de créer une classe CreneauViewModel qui exposerait les données d'un créneau d'une manière appropriée pour l'affichage. Par exemple, la propriété Occupants de cette classe pourrait renvoyer une string construite à partir des données de CreneauDTO

Discussions similaires

  1. XML: Bind vers une liste d'attributs
    Par Jayme65 dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 15/09/2012, 15h45
  2. Bind DataGridViewComboBoxCell à une list
    Par utan88 dans le forum C#
    Réponses: 0
    Dernier message: 02/09/2011, 17h48
  3. [@MVC] Binding d'une Liste
    Par Invité dans le forum Spring Web
    Réponses: 2
    Dernier message: 10/02/2011, 21h50
  4. Réponses: 9
    Dernier message: 29/01/2008, 12h33
  5. Réponses: 2
    Dernier message: 12/07/2007, 09h34

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