Export (0) Print
Expand All

TreeViewItem.ExpandSubtree Method

Expands the TreeViewItem control and all its child TreeViewItem elements.

Namespace:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

'Declaration
Public Sub ExpandSubtree

The following examples show how to find the selected TreeViewItem and expand it and all of it child items. The following XAML creates a TreeView and populates it with some data.

<StackPanel>
  <StackPanel.Resources>
    <XmlDataProvider x:Key="myCompany" XPath="Company/Employee">
      <x:XData>
        <Company xmlns="">
          <Employee Name="Don Hall">
            <Employee Name="Alice Ciccu">
              <Employee Name="David Pelton">
                <Employee Name="Vivian Atlas"/>
              </Employee>
              <Employee Name="Jeff Price">
                <Employee Name="Kari Hensien"/>
              </Employee>
              <Employee Name="Andy Jacobs"/>
            </Employee>
            <Employee Name="Bill Malone">
              <Employee Name="Maurice Taylor">
                <Employee Name="Sunil Uppal">
                  <Employee Name="Qiang Wang"/>
                </Employee>
              </Employee>
            </Employee>
          </Employee>
        </Company>
      </x:XData>
    </XmlDataProvider>

    <!-- Bind the HierarchicalDataTemplate.ItemsSource property to the employees under
         each Employee element. -->
    <HierarchicalDataTemplate x:Key="EmployeeTemplate" 
                              ItemsSource="{Binding XPath=Employee}">
      <TextBlock Text="{Binding XPath=@Name}"/>
    </HierarchicalDataTemplate>

  </StackPanel.Resources>
  <TreeView Name="treeView1"
            ItemsSource="{Binding Source={StaticResource myCompany}}" 
            ItemTemplate="{StaticResource EmployeeTemplate}"/>
  <Button Name="expandSelect" 
            Margin="5,0,0,0"
            Content="Expand _Selected Item"
            Click="expandSelected_Click"/>

</StackPanel>

The following code traverses the TreeView to find the selected TreeViewItem and then calls ExpandSubtree to display all child items of the selected TreeViewItem.

NoteNote

The GetTreeViewItem method only works for TreeViewItem controls that are not virtualized. To learn how to find a TreeViewItem that may be virtualized, see How to: Find a TreeViewItem in a TreeView.

Private Sub expandSelected_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If treeView1.SelectedItem Is Nothing Then
        Exit Sub
    End If

    Dim tvi As TreeViewItem =
        GetTreeViewItem(treeView1, treeView1.SelectedItem)

    If tvi IsNot Nothing Then
        tvi.ExpandSubtree()
    End If
End Sub

' Traverse the TreeView to find the TreeViewItem 
' that corresponds to the selected item. 
Private Function GetTreeViewItem(ByVal parent As ItemsControl,
                                 ByVal item As Object) As TreeViewItem

    ' Check whether the selected item is a direct child of 
    ' the parent ItemsControl. 
    Dim tvi As TreeViewItem =
        TryCast(parent.ItemContainerGenerator.ContainerFromItem(item), TreeViewItem)

    If tvi Is Nothing Then
        ' The selected item is not a child of parent, so check 
        ' the child items of parent. 
        For Each child As Object In parent.Items
            Dim childItem As TreeViewItem =
                TryCast(parent.ItemContainerGenerator.ContainerFromItem(child), TreeViewItem)

            If childItem IsNot Nothing Then
                ' Check the next level for the appropriate item. 
                tvi = GetTreeViewItem(childItem, item)
            End If
        Next
    End If
    Return tvi
End Function

.NET Framework

Supported in: 4.5, 4

.NET Framework Client Profile

Supported in: 4

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft