[WPF] Mettre des images dans un treeview [Résolu]

Spixy 5 Messages postés mercredi 22 avril 2009Date d'inscription 15 mai 2009 Dernière intervention - 22 avril 2009 à 11:01 - Dernière réponse : Spixy 5 Messages postés mercredi 22 avril 2009Date d'inscription 15 mai 2009 Dernière intervention
- 24 avril 2009 à 09:51
Bonjour à tous !

Voilà, en créant ma propre classe de ImageTreeViewItem qui hérite de TreeViewItem, j'ai réussi à faire que chaque "branche" de mon arbre ait une image à gauche de son libellé. Seulement, je voudrais pouvoir mettre plusieurs images les unes à la suite des autres pour chaque "branche", et non plus une seule... Quelqu'un pourrait-il m'aider s'il vous plaît ?

Merci d'avance !

Spixy.
Afficher la suite 

2 réponses

Répondre au sujet
Spixy 5 Messages postés mercredi 22 avril 2009Date d'inscription 15 mai 2009 Dernière intervention - 24 avril 2009 à 09:51
+3
Utile
Bonjour !

J'ai fini par trouver une solution, je poste le code au cas où ça intéresserait quelqu'un !

class ImageTreeViewItem : TreeViewItem
    {
        TextBlock text;
        StackPanel stack;

        public ImageTreeViewItem()
        {
            stack = new StackPanel();
            stack.Orientation = Orientation.Horizontal;
            Header = stack;
            text = new TextBlock();
            text.VerticalAlignment = VerticalAlignment.Center;
            stack.Children.Add(text);
        }

        public string Text
        {
            set { text.Text = value; }
            get { return text.Text; }
        }

        public ImageSource Image
        {
            set
            {
                Image img = new Image();
                img.VerticalAlignment = VerticalAlignment.Center;
                img.Margin = new Thickness(0, 0, 0, 0);
                img.Source = value;
                img.Height = 17;
                stack.Children.Insert(0, img);
            }
        }

        public static System.Windows.Media.Imaging.BitmapImage CreateImage(string path)
        {

            System.Windows.Media.Imaging.BitmapImage myBitmapImage = new System.Windows.Media.Imaging.BitmapImage();
            myBitmapImage.BeginInit();
            myBitmapImage.UriSource = new Uri("/Images/" + path, UriKind.Relative);
            myBitmapImage.EndInit();
            return myBitmapImage;          
        }
    }

Il suffisait donc de mettre un StackPanel à la place d'une image, et dans le code où j'appelle cette méthode je fais ceci :

ImageTreeViewItem itemEspace = new ImageTreeViewItem();
itemEspace.Text = espace.Libelle;
itemEspace.Image = ImageTreeViewItem.CreateImage("Moteur.JPG");
itemEspace.Image = ImageTreeViewItem.CreateImage("Visuel.JPG");
itemEspace.Image = ImageTreeViewItem.CreateImage("Auditif.JPG");

Sachant que ces images sont contenues dans un dossier "Images" à la racine de mon projet, et que dans leurs propriétés j'ai défini leur Build Action sur "Content" et leur Copy to output directory sur "Copy if newer".

Voilà !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Spixy
Spixy 5 Messages postés mercredi 22 avril 2009Date d'inscription 15 mai 2009 Dernière intervention - 22 avril 2009 à 13:42
0
Utile
J'ai oublié de préciser que je code en C# et que j'utilise WPF avec .Net 3.5.
Commenter la réponse de Spixy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.