TreeViewItem.ExpandSubtree Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Разворачивает элемент управления TreeViewItem и все его дочерние элементы TreeViewItem.
public:
void ExpandSubtree();
public void ExpandSubtree ();
member this.ExpandSubtree : unit -> unit
Public Sub ExpandSubtree ()
Примеры
В следующих примерах показано, как найти выбранный TreeViewItem и развернуть его и все его дочерние элементы. Следующий код XAML создает TreeView и заполняет его некоторыми данными.
<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>
В следующем коде выполняется TreeView поиск выбранного объекта TreeViewItem , а затем вызывается ExpandSubtree для отображения всех дочерних элементов выбранного элемента TreeViewItem.
Примечание
Метод GetTreeViewItem
работает только для TreeViewItem элементов управления, которые не виртуализированы. Чтобы узнать, как найти объект TreeViewItem , который может быть виртуализирован, см. статью "Практическое руководство. Поиск элемента TreeViewItem в 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