Bonjour,

En gros, j'ai un treeview qui doit contenir une liste de serveurs et pour chaque serveur, une liste de ports et une liste de comptes.
Côté C#, j'ai une liste de serveurs, chaque objet serveur possédant une liste de ports et de comptes.

J'aimerais que cela ressemble à ceci :
- server1
-- accounts
--- account1
--- account2
--- account3
-- ports
--- 22
--- 1521
- server2
-- accounts
--- account1
--- account2
--- account3
-- ports
--- 22
--- 1521

J'arrive sans souci à faire du binding et afficher la liste des serveurs avec la liste des comptes en éléments enfants. Mais j'aimerais avoir en 2e niveau les 2 éléments Ports et Accounts et en enfant de chacun la liste des ports ou la liste des comptes du serveur.

Si je ne développe pas le dernier niveau je voudrais ça :
- server1
-- accounts
-- ports
- server2
-- accounts
-- ports

J'ai tenté en utilisant une liste (ArrayList) de 2 treeviewitem (ports et account) mais il utilise le même objet arraylist pour tous les serveurs, ce qui n'est pas bon (mais logique en même temps).

Code : 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
 
<!-- Account detail template -->
<DataTemplate x:Key="AccountDetailTemplate">
     <TextBlock>
          <Run Name="nameRun" Text="{Binding Path=login}"/>
          <Run> - test : </Run>
          <Run Name="statusRun" Text="{Binding Path=teststatus}"/>
     </TextBlock>
</DataTemplate>
 
<!-- Port detail template -->
<DataTemplate x:Key="PortDetailTemplate">
     <TextBlock>
          <Run Name="nameRun" Text="{Binding Path=port}"/>
     </TextBlock>
</DataTemplate>
 
<!-- Account - port list -->
<coll:ArrayList x:Key="AccountPortsItems">
     <TreeViewItem Header="Accounts" ItemsSource="{Binding Path=accounts}" ItemTemplate="{StaticResource AccountDetailTemplate}" />
     <TreeViewItem Header="Ports" ItemsSource="{Binding Path=ports}" ItemTemplate="{StaticResource PortDetailTemplate}" ></TreeViewItem>
</coll:ArrayList>
 
<!-- Servers template -->
<HierarchicalDataTemplate x:Key="ServerTemplate" ItemsSource="{Binding Source={StaticResource AccountPortsItems}}" ItemTemplate="{StaticResource AccountsPortTemplate}">
     <TextBlock>
          <Run Name="nameRun" Text="{Binding Path=name}"/>
     </TextBlock>
</HierarchicalDataTemplate>
 
<!-- Mon treeview -->
<TreeView Name="LoginPasswordTreeview" Width="Auto" Height="450" ItemsSource="{Binding Source={StaticResource ServeursList}}" ItemTemplate="{StaticResource ServerTemplate}" Margin="5" />
Du coup, là j'ai épuisé toutes mes cartouches et je ne vois pas comment faire pourtant le problème me semble simple.

Merci