Treeview parent/enfant récupérer index
Bonjour à tous,
j'ai crée un treeview à partir d'un dataset et de relations. Cela donne ça :
TypeArticle1
-- Article1
---- Particularite1
---- Particularite2
-- Article2
---- Particularite1
-- Article3
TypeArticle2
-- Article1
---- Particularite1
-- Article2
Pour cela j'ai fait ça :
XAML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<Window.Resources>
<DataTemplate x:Key="PropTemplate">
<TextBlock Text="{Binding Nom}" Tag="3"></TextBlock>
</DataTemplate>
<HierarchicalDataTemplate x:Key="ArticleTemplate"
ItemsSource="{Binding childRelation2}"
ItemTemplate="{StaticResource PropTemplate}">
<TextBlock Text="{Binding Designation}" Tag="2" ></TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="TypeArticleTemplate"
ItemsSource="{Binding childRelation}"
ItemTemplate="{StaticResource ArticleTemplate}">
<TextBlock Text="{Binding Nom}" Tag="1"></TextBlock>
</HierarchicalDataTemplate>
</Window.Resources>
<TreeView Name="ArboTypeArt" DockPanel.Dock="Left" Background="Azure" Width="200" Margin="10,10,21,30"
ItemsSource="{Binding TypeArticle}"
ItemTemplate="{StaticResource TypeArticleTemplate}" SelectedItemChanged="ArboChangeSelection">
</TreeView> |
Lorsque l'utilisateur clique sur TypeArticle1 cela lui ouvre l'arborescence en affichant les articles appartenant à ce type d'article.
Et lorsque l'utilisateur clique sur un article (Article1 par exemple), cela remplit des textbox avec ses données correspondantes.
Mon soucis est : comment savoir si je clique sur un TypeArticle (parent) ou sur un article (enfant) en VB.NET?
J'ai fait ceci mais ça ne va pas puisque ça me retourne l'IDTypeArticle ou l'IDArticle sur lequel on clique.
Je voudrai récupérer uniquement l'IDArticle, mais comment faire pour les distinguer?
Code:
1 2 3 4 5 6 7
|
Private Sub ArboChangeSelection(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Object))
'nous permet de recuperer l'IDTypeArticle ou l'IDArticle sélectionné sur lequel on clique
Dim index As Integer
index = Me.ArboTypeArt.SelectedItem(0)
MsgBox(index.ToString) |
En cherchant, j'ai trouvé ça mais je n'arrive pas à savoir comment récupérer l'index de l'élément sur lequel on clique (ici 3 pour les tests):
Code:
1 2 3
|
Dim node As TreeViewItem = TryCast(Me.ArboTypeArt.ItemContainerGenerator.ContainerFromIndex(3), TreeViewItem)
Dim count As Integer = VisualTreeHelper.GetChildrenCount(node) |
Autre piste trouvée, rajouter un tag sur chaque niveau dans le XAML, ce que j'ai fait, mais je n'arrive pas à le récupérer par la suite...
D'avance, merci à tous pour votre aide.