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 ListView - GridView dans le code Behind


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
    Avril 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 56
    Par défaut Binding ListView - GridView dans le code Behind
    Bonjour à tous,

    J'ai un petit problème que commence à me rendre dingue

    J'ai une liste d'objet que j'aimerai Binder a une GridView mais pas moyen.
    J'ai essayé pas mal de chose mais pas moyen.
    Je vous montre la méthode que j'utilise actuellement mais qui ne fonctionne toujours pas...

    Partie C# :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //attribut qui contient les données a afficher dans la gridview
    private ObservableCollection<Unite> _attaquant = new ObservableCollection<Unite>();
     
    //je passe l'itemsource dans la méthode MainWindow()
    lvAttaquant.ItemsSource = _attaquant;

    Partie WPF :
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <ListView ItemsSource="{Binding Attaquant}" x:Name="lvAttaquant" Grid.Row="3" Grid.ColumnSpan="2" Margin="5,5,5,5">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Nom de l'unité" Width="245" DisplayMemberBinding="{Binding Nom}"/>
                            <GridViewColumn Header="Quantité" Width="200" DisplayMemberBinding="{Binding NombreUniteTotal}"/>
                            <GridViewColumn Header="Ordre" DisplayMemberBinding="{Binding OrdreAttaque}"/>
                        </GridView>
                    </ListView.View>
                </ListView>

    Et les attributs de la classe Unite.cs
    Code c# : 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
    17
    18
     
    public class Unite
        {
            public int Numero;
            public string Nom;
            public string SourceImage;
            public int PtAttaque;
            public int PtDefense;
            public int NombreUniteTotal;
            public int UnitePerdu = 0;
            public int OrdreAttaque = 1;
     
            //Signification de la numérotation :
            // 1 : Peut attaquer ce type d'unité sans que celui-ci ne riposte
            // 2 : Combat normal
            // 3 : Peut être attaqué par ce type d'unité
            // 0 : Aucunne des unités ne peut attaquer
            public List<int> Attaques;

    Donc la j'ai des ligne qui s'affiche, autant que j'ai d'éléments dans la liste,
    mais rien ne s'affiche dans les cases...
    Est ce que ma méthode est propre ?(J'ai beaucoup bidouillé dessus donc...)
    Voyez vous d'ou pourrait venir l'erreur?

    Merci

  2. #2
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Salut Anthony14,

    Tu devrais passer les champs de ta classe Unite en propriété

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     public int Numero;
     
    //devient
    protected int _Numero
    public int Numero
    {
    get{return _Numero;}
    set{_Numero= value;}
    }

    Bon code

    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 56
    Par défaut
    Un grand merci à toi koyot3.
    C'est ce qu'il manqué à mon code pour qu'il marche

    Mais qu'est ce que ça change exactement de passer par des propriétés?

  4. #4
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Content d'avoir pu t'aider...

    Le binding est basé sur le modèle PropertyDescriptor qui donc par défaut est associé à une propriété. Ca permet plusieurs trucs genre la notification avec INotifyPropertyChanged par exemple. Cela n'est pas possible avec un champ public...

    @+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2014, 14h43
  2. [Débutant] Pb GridView : lier une méthode de Sorting(OnSorting) dans le code behind
    Par tikjdaoui dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 23/10/2012, 18h02
  3. Réponses: 4
    Dernier message: 30/06/2011, 13h12
  4. Réponses: 4
    Dernier message: 04/10/2010, 14h25
  5. Réponses: 11
    Dernier message: 28/07/2009, 14h09

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