web-dev-qa-db-fra.com

wpf treeview binding

Existe-t-il un didacticiel simple pour les débutants sur la liaison arborescence dans WPF ?

Que devrions-nous écrire dans les attributs ItemsSource, DataType, ItemTemplate s’il existe Une liste d’éléments?

IList<string> items = new List<string>();
items.Add("item1");
items.Add("item2");
items.Add("item3");

Code XAML:

<TreeView Name="treeView1">  
    <TreeView.Resources> <!-- what does it mean? -->
        <HierarchicalDataTemplate DataType="???" ItemsSource="{Binding ???}"></HierarchicalDataTemplate>  
    </TreeView.Resources>  
</TreeView>
17
pojo

Pour bien comprendre comment utiliser l'arborescence wpf avec la liaison de données, j'ai suivi les didacticiels suivants dans l'ordre indiqué: 

1) Un exemple très simple de reliure arborescente utilisant la récursivité

http://testdrivendevelopment.wordpress.com/2008/07/15/databinding-wpf-treeview-using-recursion/

2) Exemple simple de Claus Konrads de liaison de données avec l'arborescence. C’est l’exemple le plus direct que j’ai rencontré et devrait inciter tous les nouveaux arrivants à se mettre au diapason.

http://blog.clauskonrad.net/2011/04/how-to-make-hierarchical-treeview.html

3) Le tutoriel de Mike Hillberg montre en détail les tenants et les aboutissants de l'arborescence, sa comparaison avec les autres contrôles wpf et la manière de lier des données.

http://blogs.msdn.com/b/mikehillberg/archive/2009/10/30/treeview-and-hierarchicaldatatemplate-step-by-step.aspx

24
Sherlock

Josh Smiths excellent tutorial

5
thumbmunkeys

Treeview est un des contrôles de wpf que vous devez utiliser d’une manière légèrement différente. C’est simple, efficace et en même temps pénible à comprendre et à vous mettre en route pour un débutant, en particulier ceux qui viennent de la fenêtre d’applications. via le motif MVVM d’abord, puis essayez d’approcher de l’arborescence.

L'article de Josh Smith ci-dessous est un bon point de départ.

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

0
biju

L'astuce est que ItemsSource pointe vers la collection suivante.

par exemple, imaginez que vous avez une collection de type A et que chaque A contient une description et une collection de type B; et chaque B contient une description et une collection de type C. La liaison devrait ressembler à ceci:

<TreeView Width="400" ItemsSource="{Binding CollectionOfA}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type TypeA}" ItemsSource="{Binding CollectionOfB}">
            <TreeViewItem Header="{Binding TypeADescription}" />
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type TypeB}" ItemsSource="{Binding CollectionOfC}">
            <TreeViewItem Header="{Binding TypeBDescription" />
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type TypeC}">
            <TreeViewItem Header="{Binding TypeC}" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
0
geometrikal