locked
listbox, binding et selection RRS feed

  • Question

  • Bonjour, voila plusieurs jours que je me trouve devant un problème et malgrés la doc que j'ai pu trouvé sur le net je n'arrive pas à le résoudre.
    (petite précision qui a toue son importance, je débute en programmation)
    Voila le problème:
    J'ai une listbox avec un binding tel quel
    <UserControl.Resources>
            <DataTemplate x:Key="ListeFilms">
                <StackPanel>
                    <TextBlock Text="{Binding Path=Nom}"/>
                    <TextBlock Text="{Binding Path=Chemin}"/>
                </StackPanel>
            </DataTemplate>  
        </UserControl.Resources>
    
    <ListBox Name="listBox1" ItemTemplate="{StaticResource ListeFilms}"/>
    
    L'item source est défini de la façon suivante:
     var rep = from m in Directory.EnumerateFiles(@"\\SERVEUR-PC\Films")
                              select new MaListFilms
                              {
                                  Nom = (string)System.IO.Path.GetFileNameWithoutExtension(m.ToString()),
                                  Chemin = (string)m,
                              };
                    listBox1.ItemsSource = rep;
    
    Jusque là ça marche. Ce que je voudrais faire c'est envoyer (par l'intermédiare d'un bouton) le contenu de l'item selctionné, dans deux textbox.
    Nom => texboxNom et Chemin => texboxChemin.
    J'ai essayé de passé par texboxNom.Text = listbox1.SelectedItem.Tostring()
    Mais ça marche pas dans ce cas la.
    J'espere avoir bien exposé mon problème.
    Merci d'avance pour vos conseils..
    Cordialement

    • Modifié RomainN mardi 17 janvier 2012 08:48
    mardi 17 janvier 2012 08:47

Réponses

  • Bonjour,

    Ton SelectedItem est un objet de type MaListFilms, et pas "un texte quelconque". Tu peux donc faire quelque chose comme : 

    textboxNom.Text = ((MaListFilms)listbox1.SelectedItem).Nom;

    Ca devrait mieux fonctionner avec quelque chose dans ce goût là. Peux tu me confirmer que tu obtiens bien ce que tu souhaites ?

    (Afin de t'éclairer un peu plus sur le fonctionnement de la listbox, dis toi que chaque Item est un objet fortement typé (dans ton cas, MaListFilms) auquel tu donnes une visualisation au travers de l'ItemTemplate. Mais ça reste quand même un MaListFilms !)

    Bon courage !

    Cordialement,

    Sébastien


    Sébastien Putier
    Consultant - Formateur technologies Microsoft
    Blog : http://sputier.wordpress.com
    MCTS Développement d'application Windows 4.0
    • Marqué comme réponse RomainN mardi 17 janvier 2012 09:56
    mardi 17 janvier 2012 09:38

Toutes les réponses

  • Bonjour,

    Ton SelectedItem est un objet de type MaListFilms, et pas "un texte quelconque". Tu peux donc faire quelque chose comme : 

    textboxNom.Text = ((MaListFilms)listbox1.SelectedItem).Nom;

    Ca devrait mieux fonctionner avec quelque chose dans ce goût là. Peux tu me confirmer que tu obtiens bien ce que tu souhaites ?

    (Afin de t'éclairer un peu plus sur le fonctionnement de la listbox, dis toi que chaque Item est un objet fortement typé (dans ton cas, MaListFilms) auquel tu donnes une visualisation au travers de l'ItemTemplate. Mais ça reste quand même un MaListFilms !)

    Bon courage !

    Cordialement,

    Sébastien


    Sébastien Putier
    Consultant - Formateur technologies Microsoft
    Blog : http://sputier.wordpress.com
    MCTS Développement d'application Windows 4.0
    • Marqué comme réponse RomainN mardi 17 janvier 2012 09:56
    mardi 17 janvier 2012 09:38
  • Bonjour Sébastien, ça marche parfaitement.

    Merci, tu m'as bien aidé à comprendre (enfin) comme le mécanisme fonctionne.

    Cordialement

    mardi 17 janvier 2012 09:56