Tout d'abord bonjour,
Je voudrais réaliser un treeview qui me permet de lister l'ensemble de mes équipes et pour chaque équipes, l'ensemble des personnes.
J'ai donc 2 types d'objets différents qui vont venir peupler mon treeview.
Voici mes classes:
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
32
33
34
35
36
37
38 public class Equipe { public Equipe(){ Child=new List<Equipe>(); } public Equipe(string name){ Child = new List<Equipe>(); Name = name; } public Equipe(string name, List<Equipe> child, List<Person> persons){ Name = name; Child = child; Persons = persons; } public string Name { get; set; } public List<Equipe> Child { get; set; } public List<Person> Persons { get; set; } } public class Person { public Person() { } public Person(string firstname, string lastname) { Firstname = firstname; Lastname = lastname; } public string Firstname { get; set; } public string Lastname { get; set; } }
Dans mon treeview j'ai un template qui diffère en fonction du type d'objet
Code xml : 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 <TreeView ItemsSource="{Binding}" Name="TreeViewTest"> <TreeView.Resources> <HierarchicalDataTemplate ItemsSource="{Binding Path=Child, Mode=OneWay}" DataType="{x:Type GUI:Equipe}"> <StackPanel Orientation="Horizontal"> <Image Source="/equipe.png" Width="16" VerticalAlignment="Center" /> <TextBlock Text="{Binding Path=Name}" VerticalAlignment="Center" /> </StackPanel> </HierarchicalDataTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=Persons, Mode=OneWay}" DataType="{x:Type GUI:Person}"> <StackPanel Orientation="Horizontal"> <Image Source="/person.png" Width="16" VerticalAlignment="Center" /> <TextBlock VerticalAlignment="Center"> <TextBlock.Text> <MultiBinding StringFormat="{}{0} {1}"> <Binding Path="Lastname" /> <Binding Path="Firstname" /> </MultiBinding> </TextBlock.Text> </TextBlock> </StackPanel> </HierarchicalDataTemplate> </TreeView.Resources> </TreeView>
Je viens le remplir comme ça:
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 public MainWindow() { InitializeComponent(); var equipe1 = new Equipe("Equipe 1", new List<Equipe>(){ new Equipe("Equipe 1.1"), new Equipe("Equipe 1.2") }, new List<Person>(){ new Person("Francçois","DUPOND"), new Person("Tristan","LAMI") }); var equipe2 = new Equipe("Equipe 2"); var equipeFull = new Equipe("Full", new List<Equipe>() {equipe1, equipe2},new List<Person>() {new Person("Benoit", "LAFFOND")}); TreeViewTest.DataContext = new List<Equipe>(){equipeFull}; }
Et voilà le résultat, aucune personne n'est affichée. Je ne comprend pas vraiment pourquoi. Un coup de main serait il possible?
![]()
Partager