TreeViewItem.ExpandSubtree Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Espande il controllo TreeViewItem e tutti i relativi elementi TreeViewItem figlio.
public:
void ExpandSubtree();
public void ExpandSubtree ();
member this.ExpandSubtree : unit -> unit
Public Sub ExpandSubtree ()
Esempio
Gli esempi seguenti illustrano come trovare l'elemento selezionato TreeViewItem ed espanderlo ed espanderlo tutti gli elementi figlio. Il codice XAML seguente crea un oggetto TreeView e lo popola con alcuni dati.
<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>
Il codice seguente attraversa l'oggetto TreeView per trovare l'oggetto selezionato TreeViewItem e quindi chiama ExpandSubtree per visualizzare tutti gli elementi figlio dell'oggetto selezionato TreeViewItem.
Nota
Il GetTreeViewItem
metodo funziona solo per TreeViewItem i controlli non virtualizzati. Per informazioni su come trovare un TreeViewItem oggetto che può essere virtualizzato, vedere Procedura: Trovare un oggetto TreeViewItem in un controllo 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