Vous avez besoin d'une collection de haut niveau ReportDefinition
objets:
TopLevelReportDefinitions = ReportDefinitions.Where(rd => rd.ParentID == 0)
Vous devez lier cette collection à la ItemsSource
du TreeView
.
Dans EF, vous devez également créer une relation parent-enfant sur ReportDefinition
en reliant les enfants au parent en utilisant ParentID
. Pour plus de commodité, vous pouvez nommer la collection inverse Children
. La collection d'objets ReportDefinition
directement sous une autre ReportDefinition
est alors la collection:
ReportDefinition.Children
Vous devez alors créer HierarchicalTemplate
dans le TreeView
:
<TreeView ItemsSource="{Binding TopLevelReportDefinitions}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Merci pour la réponse, Martin. Voici ce que j'ai fait: 'using (var context = new reportEntities (entitéConnexionChaîne)) {var TopLevelReportDefinitions = context.ReportDefinitions.Where (rd => rd.ParentID == 0); tvReport.ItemsSource = TopLevelReportDefinitions.ToList(); } 'J'ai également ajouté le modèle suggéré à TreeView. Malheureusement, je ne suis pas capable de comprendre comment créer la relation parent-enfant. Pouvez-vous m'aider avec ça? – Yeseanul
@Yeseanul: Une option consiste à créer la relation dans la base de données (une clé étrangère de ParentID à idReportDefinition). Ensuite, si vous mettez à jour votre modèle à partir de la base de données, j'attendrais que EF crée des propriétés pour la relation dans le modèle. Les noms ne seront pas 'Parent' et' Children' mais vous pouvez les renommer. –
Je l'ai fait juste (ajouté une clé étrangère dans la base de données et mis à jour le modèle) mais sans succès. J'ai fini par étendre la classe partielle public ReportDefinition: EntityObject que EF a créée; donc j'ai ajouté une propriété 'public IList GetChildren'. J'ai également modifié le modèle en conséquence ''. Cette approche fournit des résultats: le TreeView montre seulement les enfants mais ne montre pas les parents. Un autre problème est que cela ne montre pas Grand-Enfants, Grand-Grand-Enfants ... Des pensées à ce sujet? –
Yeseanul