2008-11-07 9 views
0

J'ai une classe avec les propriétés Parent et Enfants.WPF TreeView Binding

ADO.NET Entity Framework Hierarchical Page Class http://img148.imageshack.us/img148/6802/edmxxe8.gif

Je veux afficher cette hiérarchie dans un TreeView WPF.

Voici mon XAML ...

<TreeView Margin="12" Name="TreeViewPages" ItemsSource="{Binding}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type Page}" ItemsSource="{Binding Children}"> 
      <TextBlock Text="{Binding Path=ShortTitle}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 

Et mon code VB ...

 
Dim db As New PageEntities 
Dim t = From p In db.Page.Include("Children") _ 
     Where p.Parent Is Nothing _ 
     Select p 
TreeViewPages.ItemsSource = t 

Mais je reçois un arbre avec un, élément non basé sur un modèle:

 
PageManager.Page 

Que dois-je faire pour que cela fonctionne?

+0

Voir la question connexe: http://stackoverflow.com/questions/269523/how-do-i-use-a-wpf-treeview-hierarchicaldatatemplate-with-linq-to-entities#273535 –

Répondre

1

Vous devez définir un mappage xmlns vers votre classe Page dans le fichier XAML et l'utiliser dans votre déclaration Type. La raison pour laquelle vous n'obtenez pas d'erreur de compilation est que la classe Page est déjà définie dans WPF.

Donc, si votre classe Page a été définie dans l'espace de noms Zack, dans l'assemblée TreeViewBinding, vous devez ajouter la déclaration suivante au conteneur parent (fenêtre le plus probable):

xmlns:local="clr-namespace:Zack;assembly=TreeViewBinding" 

Et puis modifier votre DataTemplate à ce qui suit:

<HierarchicalDataTemplate DataType="{x:Type local:Page}" ItemsSource="{Binding Children}"> 

Je vais clarifier mon message pour votre question initiale.

+0

question précédente: http: //stackoverflow.com/questions/272854/wpf-treeview-binding –