TreeView

Hierarchical data display with expand/collapse navigation.

Overview

TreeView extends Control and displays hierarchical data as an expandable and collapsible tree structure. Each node is a TreeViewItem that can contain child TreeViewItem elements. Nodes with children show an expand/collapse indicator: when expanded and when collapsed. Each nesting level is indented by 2 characters. The currently selected node is highlighted with configurable SelectedBackground and SelectedForeground colors.

Basic Example

<TreeView>
  <TreeViewItem Header="Documents" IsExpanded="True">
    <TreeViewItem Header="Work">
      <TreeViewItem Header="report.pdf" />
      <TreeViewItem Header="notes.txt" />
    </TreeViewItem>
    <TreeViewItem Header="Personal">
      <TreeViewItem Header="photo.jpg" />
    </TreeViewItem>
  </TreeViewItem>
  <TreeViewItem Header="Downloads">
    <TreeViewItem Header="setup.exe" />
  </TreeViewItem>
</TreeView>

Properties

PropertyTypeDefaultDescription
SelectedItemTreeViewItemnullThe currently selected tree node.
SelectedBackgroundColorBlueBackground color of the selected node.
SelectedForegroundColorWhiteForeground color of the selected node.

TreeViewItem Properties

PropertyTypeDefaultDescription
HeaderobjectnullThe text or content displayed for this node.
IsExpandedboolfalseWhether this node's children are visible.
ItemsIList<TreeViewItem>emptyChild nodes of this tree item.

Creating Items

Nested TreeViewItem Elements

<TreeView>
  <TreeViewItem Header="Root">
    <TreeViewItem Header="Child 1" />
    <TreeViewItem Header="Child 2">
      <TreeViewItem Header="Grandchild 1" />
      <TreeViewItem Header="Grandchild 2" />
    </TreeViewItem>
  </TreeViewItem>
</TreeView>

Pre-Expanded Nodes

<TreeView>
  <TreeViewItem Header="src" IsExpanded="True">
    <TreeViewItem Header="Controls" IsExpanded="True">
      <TreeViewItem Header="Button.cs" />
      <TreeViewItem Header="TextBlock.cs" />
      <TreeViewItem Header="TreeView.cs" />
    </TreeViewItem>
    <TreeViewItem Header="App.cs" />
  </TreeViewItem>
  <TreeViewItem Header="tests">
    <TreeViewItem Header="ButtonTests.cs" />
  </TreeViewItem>
</TreeView>

Examples

File Explorer Style

<TreeView SelectedBackground="DarkCyan" SelectedForeground="White">
  <TreeViewItem Header="C:" IsExpanded="True">
    <TreeViewItem Header="Program Files">
      <TreeViewItem Header="TerminalNinja" />
      <TreeViewItem Header="dotnet" />
    </TreeViewItem>
    <TreeViewItem Header="Users">
      <TreeViewItem Header="Admin" />
      <TreeViewItem Header="Guest" />
    </TreeViewItem>
    <TreeViewItem Header="Windows" />
  </TreeViewItem>
</TreeView>

Configuration Tree

<TreeView>
  <TreeViewItem Header="Application Settings" IsExpanded="True">
    <TreeViewItem Header="General">
      <TreeViewItem Header="Language: English" />
      <TreeViewItem Header="Theme: Dark" />
    </TreeViewItem>
    <TreeViewItem Header="Network">
      <TreeViewItem Header="Proxy: None" />
      <TreeViewItem Header="Timeout: 30s" />
    </TreeViewItem>
  </TreeViewItem>
</TreeView>

Keyboard Shortcuts

KeyAction
Up ArrowMove selection to the previous visible node.
Down ArrowMove selection to the next visible node.
Left ArrowCollapse the current node, or move to parent if already collapsed or a leaf.
Right ArrowExpand the current node, or move to first child if already expanded.
EnterToggle expand/collapse of the current node.
SpaceToggle expand/collapse of the current node.
HomeMove selection to the first visible node.
EndMove selection to the last visible node.

Key Concepts