TreeViewItem.ExpandSubtree Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Rozwija kontrolkę TreeViewItem i wszystkie jej elementy podrzędne TreeViewItem .
public:
void ExpandSubtree();
public void ExpandSubtree ();
member this.ExpandSubtree : unit -> unit
Public Sub ExpandSubtree ()
Przykłady
W poniższych przykładach pokazano, jak znaleźć wybrane TreeViewItem i rozwinąć i wszystkie elementy podrzędne. Poniższy kod XAML tworzy TreeView obiekt i wypełnia go danymi.
<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>
Poniższy kod przechodzi przez element , TreeView aby znaleźć wybrane TreeViewItem , a następnie wywołuje polecenie ExpandSubtree w celu wyświetlenia wszystkich elementów podrzędnych wybranego TreeViewItemelementu .
Uwaga
Metoda GetTreeViewItem
działa tylko w przypadku TreeViewItem kontrolek, które nie są zwirtualizowane. Aby dowiedzieć się, jak znaleźć elementTreeViewItem, który może zostać zwirtualizowany, zobacz How to: Find a TreeViewItem in a TreeView (Jak znaleźć element TreeViewItem w widoku drzewa).
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