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

Spixy
Messages postés
5
Date d'inscription
mercredi 22 avril 2009
Dernière intervention
15 mai 2009
- 22 avril 2009 à 11:01 - Dernière réponse : Spixy
Messages postés
5
Date d'inscription
mercredi 22 avril 2009
Dernière intervention
15 mai 2009
- 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 

Votre réponse

2 réponses

Meilleure réponse
Spixy
Messages postés
5
Date d'inscription
mercredi 22 avril 2009
Dernière intervention
15 mai 2009
- 24 avril 2009 à 09:51
3
Merci
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à !

Merci Spixy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Spixy
Spixy
Messages postés
5
Date d'inscription
mercredi 22 avril 2009
Dernière intervention
15 mai 2009
- 22 avril 2009 à 13:42
0
Merci
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.