Click here to Skip to main content
Click here to Skip to main content


, 6 Apr 2008 CPOL
Rate this:
Please Sign up or sign in to vote.
TreeView with multiple columns


This control is supposed to display hierarchical data in a TreeView while providing the possibility to append additional information to each item.


I needed to present data in a hierarchical structure but it was required to display additional information for each item. At first, I appended all this information to the TreeNodeItem's text which was quite unclear for the user.

Using the Code

To use the multi column TreeView in your own application, declare the control in any of your windows or controls. TreeListView exposes all properties of ListView plus AllowsColumnReorder and Columns.

<local:TreeListView AllowsColumnReorder="True">

Both properties correlate with the AllowsColumnReorder and Columns properties of GridView which is documented here.

Hierarchical Data Template

In order to provide the tree with a way to retrieve child nodes, you must either declare a HierarchicalDataTemplate or a DataTemplateSelector.

TreeListView is only going to use the ItemsSource property of the HierarchicalDataTemplate or DataTemplateSelector because all information is visualized in the same manner (in rows). Therefore, a declaration as follows is sufficient:

    <HierarchicalDataTemplate ItemsSource="{Binding Children}"/>


It is vital to declare at least one column which the TreeListView is going to use to visualize the data. MSDN provides sufficient information about declaring GridViewColumns so I am not going to go into any details.

The only new thing about declaring GridViewColumns is that at least one column must contain a TreeListViewExpander which is a ToggleButton that can expand its row and indents all contents in its column.

            <StackPanel Orientation="Horizontal">
                <!--<span class="code-comment">The Expander Button (can be used in any column 
                (typically the first one))--></span>
                <!--<span class="code-comment">The data to display in this column--></span>
                <TextBlock Text="{Binding}"/>

And that's it!

Points of Interest

It would probably be a good idea to implement all features of GridView. Unfortunately I do not have the time to do that right now.


  • 6th April, 2008
    • First release
    • Fixed file download


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author


United States United States
No Biography provided

Comments and Discussions

QuestionDatabinding to 'IsSelected' and 'IsExpanded' properties of view model PinmemberHollyVi8-Sep-13 7:08 
QuestionKeyboard navigation and .NET 4.5 Pinmemberjenschrrh17-May-13 12:28 
I've used this control as basis for a control in an application and find that the keyboard navigation acts up in certain cases. If I have a simple tree like shown below, pressing 'Up-Arrow' key with 'Node 5' selected, moves the selection to 'Node 1'. Subsequent presses on the 'Up-Arrow' key then selects 'Node 4', 'Node 3' and 'Node 2'
Node 1
  Node 2
  Node 3
  Node 4
Node 5
  Node 6
My application targets .NET 4.0, where navigation works. When I run it on a computer that has .NET 4.5 (which then have replaced .NET 4.0), then this strange behavior occurs.
I've tried using a normal TreeView control, that works fine on both 4.0 and 4.5.
Anybody got a suggestion as to what have changed between 4.0 and 4.5 that would do something like this, or got an updated control that works?
AnswerRe: Keyboard navigation and .NET 4.5 Pinmemberjenschrrh17-May-13 13:40 
GeneralMy vote of 5 PinmemberSTRICQ12-May-13 10:41 
QuestionFrozenColumnCount Pinmemberedmolko27-Nov-12 6:38 
QuestionHierarchicalDataTemplate PinmemberMember 144952325-Jul-12 5:22 
Questionhow binding with use entity framework Pinmemberurmcoder13-Dec-11 14:17 
QuestionDifferent display for nodes in main (=first) column PinmemberMember 81586592-Sep-11 8:20 
QuestionFix Columns? Pinmemberklgott21-Mar-11 5:20 
AnswerRe: Fix Columns? PinmemberZoot18-Jul-11 9:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150327.1 | Last Updated 6 Apr 2008
Article Copyright 2008 by tillmyspace
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid