Treeview avec des items de types différents?
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:
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:
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:
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?
http://www.developpez.net/forums/att...1&d=1306829492