TreeViewItem.ExpandSubtree Methode

Definitie

Hiermee vouwt u het TreeViewItem besturingselement en alle onderliggende TreeViewItem elementen uit.

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

Voorbeelden

In de volgende voorbeelden ziet u hoe u de geselecteerde TreeViewItem items en alle onderliggende items kunt vinden en uitvouwen. Met de volgende XAML wordt een TreeView bestand gemaakt en gevuld met enkele gegevens.

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

Met de volgende code wordt de TreeView geselecteerde TreeViewItem gevonden en vervolgens aanroepen ExpandSubtree om alle onderliggende items van de geselecteerde TreeViewItemitems weer te geven.

Note

De GetTreeViewItem methode werkt alleen voor TreeViewItem besturingselementen die niet zijn gevirtualiseerd. Zie TreeViewItem voor meer informatie over het zoeken naar een gevirtualiseerde structuur.

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

Van toepassing op