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 dans usercontrol [Débutant(e)]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Par défaut Binding ListView dans usercontrol
    Bonjour à tous,

    J'ai déjà vu plusieurs fois un sujet similaire sur le forum mais je n'ai pas trouvé ma réponse.
    J'ai suivi ce tuto
    http://www.switchonthecode.com/tutor...istview-part-1

    Cela a très bien fonctionné dans un windows mais j'ai voulu appliquer la même chose dans un user control mais ça ne fonctionne pas.

    voila le fichier xaml
    Code xaml : 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
    19
    20
    21
    22
    23
    24
     
    <UserControl x:Class="Contacts.Clients"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 DataContext="{Binding RelativeSource={RelativeSource Self}}"             
                 d:DesignHeight="449" d:DesignWidth="1004">
        <Grid>
            ....
     
            <ListView Height="312" HorizontalAlignment="Left" Margin="687,104,0,0" Name="listViewContacts" VerticalAlignment="Top" Width="297" ItemsSource= "{Binding ListeClients}" >
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding Numero}" Header="Numero" />
                        <GridViewColumn DisplayMemberBinding="{Binding Nom}" Header="Nom" />
                        <GridViewColumn DisplayMemberBinding="{Binding Prenom}" Header="Prenom" />
                    </GridView>
                </ListView.View>
            </ListView>
            ....
        </Grid>
    </UserControl>

    Et le code Behind :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
     
    namespace Contacts
    {
        /// <summary>
        /// Logique d'interaction pour Clients.xaml
        /// </summary>
        public partial class Clients : UserControl
        {
            private IDonnees _donnees;
            public ObservableCollection<Client> ListeClients { get; private set; }
            private IControleBoutonsClients controleClients;
            private delegate bool testerChaine(string texte);
            private Client _clientCourant;
     
            public Client ClientCourant
            { get { return _clientCourant; } }
     
            public Clients()
            {
                InitializeComponent();
                ListeClients = new ObservableCollection<Client>();
                controleClients = new ControleBoutonsContacts();
                _donnees = DonneesXML.Instance;
            }
     
            ....
     
       }
    }


    Voyez vous ce qui cloche ?

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Quand tu dis "ça ne fonctionne pas", qu'est-ce que tu entends par là ?
    Tu n'as rien d'afficher dans ta ListView ?

    De ce qu'on voit du code, tu initialises la propriété 'ListeClients', mais tu ne l'as remplis pas :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeClients = new ObservableCollection<Client>();

    Donc à ce stade, ta ListView sera vide.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Par défaut
    Excuses moi je n'ai pas été assez précis.

    Quand je lance le logiciel ma liste est vide, même quand j'ajoute des données dans la liste.

    J'ajoute bien dans la liste. En debug j'ai bien des éléments dans la liste.

    J'ai mit un .zip avec tout le code au cas où
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    C'est assez bizarre à première vue. Le DataContext de la ListView correspond bien au contexte du UserControl, mais le binding ne fonctionne pas (ou alors je rate quelque chose...).
    Tu peux t'en sortir en affectant le DataContext de la ListView dans le constructeur du UserControl :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public Clients()
            {
                _clientCourant = new Client();
                InitializeComponent();
                _listeClients = new ObservableCollection<Client>();
                controleClients = new ControleBoutonsContacts();
                _donnees = DonneesXML.Instance;
     
                this.listViewContacts.DataContext = this.ListeClients;
            }

    Et côté xaml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ListView ... ItemsSource="{Binding }" >

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Par défaut
    Merci de ta réponse j'ai essayé ça mais ça ne fonctionne toujours pas.

    Faut il que je laisse la ligne Datacontext ici ?
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <UserControl x:Class="Contacts.Clients"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 DataContext="{Binding RelativeSource={RelativeSource Self}}"             
                 d:DesignHeight="449" d:DesignWidth="1004">

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut, je n'ai pas fait d'autres modifications sur ton code fournit dans le zip et j'ai bien 3 lignes au chargement.

    Je met le code de la ListView dès fois qu'on se soit pas compris :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            <ListView Height="312" HorizontalAlignment="Left" Margin="687,104,0,0" Name="listViewContacts" VerticalAlignment="Top" Width="297" ItemsSource= "{Binding }" >
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding Numero}" Header="Numero" />
                        <GridViewColumn DisplayMemberBinding="{Binding Nom}" Header="Nom" />
                        <GridViewColumn DisplayMemberBinding="{Binding Prenom}" Header="Prenom" />
                    </GridView>
                </ListView.View>
            </ListView>

    Peut-être que tu as fais des modifs de ton côté depuis le post avec le zip. Essaies éventuellement de repartir du zip.

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

Discussions similaires

  1. [Débutant] Binding d'un UserControl dans RowDetailsTemplate
    Par Tarteens dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 16/10/2013, 10h40
  2. Binding ListView - GridView dans le code Behind
    Par Anthony14 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 22/02/2012, 11h08
  3. Binding Checkbox dans une ListView
    Par Ashura95 dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 18/10/2010, 16h50
  4. Binding listView et objet d'une classe dans une autre classe
    Par warmy dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 09/06/2009, 14h26
  5. Listview dans un treeview en binding
    Par silberfab dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 07/04/2009, 17h26

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