2010-11-11 4 views
0

J'ai une table de base de données qui a Id, Groupe, Articles en tant que colonnes. Comment puis-je coder le modèle de XAML avec liaison, de sorte que la liste apparaît commeReliure TreeView

Groupe 1

  • article 1
  • article 2

Groupe 2

  • article 3

Répondre

0

Puisque vous avez besoin d'une hiérarchie, la meilleure approche dans mon esprit serait un TreeView. Vous devez regrouper les données dans la hiérarchie souhaitée, puis vous pouvez lier l'arborescence aux éléments de niveau supérieur de votre source de données, dans votre cas les éléments "Groupe".

Pour les éléments qui contiennent également des éléments enfants, vous devez ajouter un HierarchicalDataTemplate à l'arborescence. Il est important de noter que tout objet dont vous tirez vos éléments doit prendre en charge une propriété contenant la collection d'éléments enfants. l'attribut ItemsSource.

Pour les articles qui n'ont pas d'articles enfants (les articles "article" dans votre exemple), vous pouvez ajouter un DataTemplate régulier.

En résumé, le TreeView XAML pourrait ressembler à ceci:

 <TreeView Name="myTreeView" ItemsSource="{Binding}" > 
      <TreeView.Resources> 
       <HierarchicalDataTemplate DataType="{x:Type GroupType}" ItemsSource="{Binding Items}"> 
       </HierarchicalDataTemplate> 
       <DataTemplate DataType="{x:Type ItemType}"> 
       </DataTemplate> 
      </TreeView.Resources> 
     </TreeView> 

Pour affecter les nœuds de haut niveau une fois que vous avez créé les objets de données correspondant (qui à leur tour ont chacun une collection d'enfants affectés), vous pouvez dites simplement:

foreach(GroupType myGroup in myGroupCollection) 
     myTreeView.Items.Add(myGroup);