TreeViewItem.ExpandSubtree Método

Definición

Expande el control TreeViewItem y todos sus elementos TreeViewItem secundarios.

public:
 void ExpandSubtree();
public void ExpandSubtree ();
member this.ExpandSubtree : unit -> unit
Public Sub ExpandSubtree ()

Ejemplos

En los ejemplos siguientes se muestra cómo buscar el elemento seleccionado TreeViewItem y expandirlo y todos los elementos secundarios. El código XAML siguiente crea y TreeView lo rellena con algunos datos.

<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>

El código siguiente recorre para TreeView buscar el seleccionado TreeViewItem y, a continuación, llama ExpandSubtree a para mostrar todos los elementos secundarios del seleccionado TreeViewItem.

Nota

El GetTreeViewItem método solo funciona para TreeViewItem los controles que no están virtualizados. Para obtener información sobre cómo buscar un TreeViewItem objeto que se puede virtualizar, vea Cómo: Buscar un treeViewItem en un treeView.

private void expandSelected_Click(object sender, RoutedEventArgs e)
{
    if (treeView1.SelectedItem == null)
    {
        return;
    }

    TreeViewItem tvi = GetTreeViewItem(treeView1, treeView1.SelectedItem);

    if (tvi != null)
    {
        tvi.ExpandSubtree();
    }
}

// Traverse the TreeView to find the TreeViewItem 
// that corresponds to the selected item.
private TreeViewItem GetTreeViewItem(ItemsControl parent, object item)
{
    // Check whether the selected item is a direct child of 
    // the parent ItemsControl.
    TreeViewItem tvi =
        parent.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;

    if (tvi == null)
    {
        // The selected item is not a child of parent, so check
        // the child items of parent.
        foreach (object child in parent.Items)
        {
            TreeViewItem childItem = 
                parent.ItemContainerGenerator.ContainerFromItem(child) as TreeViewItem;

            if (childItem != null)
            {
                // Check the next level for the appropriate item.
                tvi = GetTreeViewItem(childItem, item);
            }
        }
    }
    return tvi;
}
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

Se aplica a