We can remain focused on the tree data structure, it’s behavior, it’s state, and just tell the TreeView how we want to view the tree. We declare all of this in XAML, and let TreeView handle all the details of applying our styles and templates. We can provide in-depth customizations for how the TreeView renders the items, by setting properties such as ItemContainerStyle to affect properties of every TreeViewItem, and ItemTemplate to specify what each item should look like and where its child items come from.
We are not required to focus much on the TreeView, but more on the data we actually care about. At that point, the TreeView will do all the grunt work of creating TreeViewItems and hooking them together for us. The fact that the WPF TreeView supports data binding allows us to create a tree data structure, perhaps of custom ViewModel objects, and provide it to the TreeView control’s ItemsSource property. We can use the TreeView in our WPF programs to literally provide a view of a tree.
Granted, at the end of the day, it still has a tree data structure consisting of TreeViewItem objects, but the similarities end there. The WPF TreeView control is very different. WinForms should have a Tree control instead of a TreeView control. By the same reasoning, we should call the Menu a MenuView and the ComboBox a ComboBoxView, but that is not the case. One could argue that the WinForms TreeView control’s name is a misnomer, because it can only show its own TreeNodes. You create a tree data structure in the control, where each node in the tree is of type TreeNode, and the control renders those nodes. The WinForms TreeView control is not really providing a “view” of a tree: it is the tree. After a while, I got used to the name and never gave it much thought, until now. NET 1.0 era, I don’t think any other control had the word “View” tacked onto the end of its name, except for ListView. Why not call it the Tree control? Why did they add the word “View” to the end? At the time, the. When I first started learning about Windows Forms, I thought the TreeView control had a strange name. My recent article about it, which, by the way, is my wedding gift to Sacha Barber, discusses how the ideal way of working with a TreeView is to bind it to a ViewModel, and then program against the ViewModel. However, as soon as things get a bit more complicated, the advantages of using data bindings gets more obvious.I have been thinking a lot about the WPF TreeView control lately. This first example was very simple, in fact so simple that we might as well have just added the TreeView items manually, instead of generating a set of objects and then binding to them. I instruct it to use the I tems property for finding child items, by setting the ItemsSource property of the template, and inside of it I define the actual template, which for now just consists of a TextBlock bound to the Title property. In the XAML markup, I have specified a HierarchicalDataTemplate for the ItemTemplate of the TreeView.
Public partial class TreeViewDataBindingSample : Window Namespace WpfTutorialSamples.TreeView_control In the following example, will show you just how easy it is to get started with the HierarchicalDataTemplate: Instead, we use the HierarchicalDataTemplate, which allows us to template both the tree node itself, while controlling which property to use as a source for child items of the node. The WPF TreeView supports data binding, like pretty much all other WPF controls does, but because the TreeView is hierarchical in nature, a normal DataTemplate often won’t suffice.