Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

wpf treeview binding [closed]

Is there any simple tutorial for beginners about treeview binding in WPF?

What should we write in ItemsSource, DataType, ItemTemplate attributes if there's one List of items?

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

XAML code:

<TreeView Name="treeView1">       <TreeView.Resources> <!-- what does it mean? -->         <HierarchicalDataTemplate DataType="???" ItemsSource="{Binding ???}"></HierarchicalDataTemplate>       </TreeView.Resources>   </TreeView> 
like image 534
pojo Avatar asked Mar 14 '11 06:03

pojo


2 Answers

To Fully understand how to use the wpf treeview with data binding, I went through the following tutorials in order -

  1. A very simple example of treeview binding using recursion

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

  1. Claus Konrads simple example of data binding with the treeview. It's the most straightforward example I have come across and should get any newcomers to wpf up to speed.

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

  1. Mike Hillbergs tutorial shows, in detail, the ins and outs of the treeview, how it compares to other wpf controls, and how to bind data.

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

like image 129
Sherlock Avatar answered Oct 03 '22 03:10

Sherlock


The trick is that ItemsSource points to the next collection down.

e.g Imagine you have a collection of type A, and each A contains a description and a collection of type B; and each B contains a description and a collection of type C. The binding would look like this:

<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> 
like image 24
geometrikal Avatar answered Oct 03 '22 03:10

geometrikal