J'ai une structure arborescente à 4 niveaux, défini par:Puis-je envelopper automatiquement les éléments HierarchicalDataTemplate dans un TreeViewItem?
<HierarchicalDataTemplate DataType="{x:Type src:Level1}" ItemsSource="{Binding Path=Level2Items}">
<TextBlock Text="{Binding Path=Level1Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:Level2}" ItemsSource="{Binding Path=Level3Items}">
<TextBlock Text="{Binding Path=Level2Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:Level3}" ItemsSource="{Binding Path=Level4Items}">
<TextBlock Text="{Binding Path=Level3Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type src:Level4}">
<TextBlock Text="{Binding Path=Level4Name}"/>
</DataTemplate>
Et il fonctionne très bien. La seule chose est, je ne peux pas sélectionner par programme aucun de mes éléments liés, parce qu'ils ne sont pas de type TreeViewItem (et n'ont donc pas la propriété "IsSelected"). Existe-t-il un moyen d'envelopper automatiquement les éléments de la base de données dans un type de conteneur particulier (dans ce cas: TreeViewItem)?
Malheureusement, votre hypothèse que les éléments liés seront emballés automatiquement dans un TreeViewItem n'est pas vrai dans mon cas (pour quelque raison que ce soit). L'appel de GetType() sur le premier élément de la collection Items de TreeView renvoie mon type, pas de type "TreeViewItem". Des pensées? Merci!! – Pwninstein
La collection Items contient vos éléments comme prévu. L'arbre visuel, cependant, enveloppe votre article dans un conteneur. Pour TreeViews, le conteneur est un TreeViewItem. –
Kent a absolument raison. Chaque élément est enveloppé dans un ItemContainer, décrit par la propriété ItemContainerStyle. Pour un TreeView, le conteneur par défaut est un TreeViewItem. Consultez l'article de blog du Dr WPF sur ItemContainers: http://drwpf.com/blog/Home/tabid/36/EntryID/32/Default.aspx – Adrian