2017-09-03 2 views
0

J'essaye de lier une liste de chaînes dans un TreeViewItem mais pour une raison quelconque, aucune donnée n'est affichée, ni aucune erreur.Création d'enfants TreeViewItem à l'aide ItemSource de la liste <string>

Dans le code XAML j'ai les éléments suivants dans mon TreeViewItem.

<TreeView Name="treeContainer"> 
      <TreeViewItem Header="Tables" Name="treeTablesContainer"> 
       <ItemsControl.ItemContainerStyle> 
        <Style TargetType="{x:Type TreeViewItem}" /> 
       </ItemsControl.ItemContainerStyle> 
       <ItemsControl.ItemTemplate> 
        <HierarchicalDataTemplate 
         DataType="{x:Type system:String}"> 
         <TextBlock Text="{Binding dbTables}" /> 
        </HierarchicalDataTemplate> 
       </ItemsControl.ItemTemplate> 
      </TreeViewItem> 
     </TreeView> 

Dans le code cs je donne les résultats suivants:

dbTables = new List<string>(); 
      dbTables.Add("Tabl2"); 
      treeTablesContainer.ItemsSource = dbTables; 

Le TreeViewItem peut être étendu et se sont effondrés, cependant, il n'y a pas d'enfants et je Bein affichés ne vois pas comment obtenir ce travail.

J'ai fait quelque chose de similaire à cela dans une autre partie du projet, sauf que la liste est différente de ma propre classe avec des propriétés que je peux référencer dans la ligne <TextBlock Text="{Binding dbTables}" /> mais je pense que cela ne fonctionne pas à cause de le type List<string> donc je n'ai aucune propriété à accéder, est ma pensée correcte et si oui, comment puis-je résoudre ce problème.

Répondre

0

Le modèle de données hiérarchique est un modèle de données pour chaque élément de la source de données. Cela signifie que dans votre exemple, la liaison du bloc de texte recherche dbTables sur une chaîne de caractères. votre code XAML devrait ressembler à

<TreeView Name="treeContainer"> 
     <TreeViewItem Header="Tables" Name="treeTablesContainer"> 
      <ItemsControl.ItemContainerStyle> 
       <Style TargetType="{x:Type TreeViewItem}" /> 
      </ItemsControl.ItemContainerStyle> 
      <ItemsControl.ItemTemplate> 
       <HierarchicalDataTemplate> 
        <TextBlock Text="{Binding}" /> 
       </HierarchicalDataTemplate> 
      </ItemsControl.ItemTemplate> 
     </TreeViewItem> 
    </TreeView> 
+0

De toutes les choses que j'ai essayé, pourquoi ne pas que je pense juste en supprimant le paramètre de liaison. Merci – Boardy

1
<TreeView Name="treeContainer"> 
      <TreeViewItem Header="Tables" Name="treeTablesContainer"> 
       <ItemsControl.ItemContainerStyle> 
        <Style TargetType="{x:Type TreeViewItem}" /> 
       </ItemsControl.ItemContainerStyle> 
       <ItemsControl.ItemTemplate> 
        <HierarchicalDataTemplate> 
         <TextBlock Text="{Binding }" /> 
        </HierarchicalDataTemplate> 
       </ItemsControl.ItemTemplate> 
      </TreeViewItem> 
     </TreeView> 

Il suffit de retirer DBTables dans la liaison comme ne lie pas à une propriété nommée DBTables dans votre collection