В дополнение к комментарию user2779123, и я знаю, что на него уже давно дан ответ, но я бы также предложил, чтобы код Пьера-Оливье Пиньона выдвинул treeItem.IsExpanded = true; не только переместиться в область проверки нуля, но и переместить ее в процедуру ExpandAll, так как она, кажется, записана в формате, который допускает как расширение, так и свертывание древовидной структуры, и перемещение этого туда добавит к этому корневые узлы. функциональность по дизайну.
Согласно приведенному ниже примеру:
private void ExpandAll(ItemsControl items, bool expand)
{
items.IsExpanded = expand;
foreach (object obj in items.Items)
{
ItemsControl childControl = items.ItemContainerGenerator.ContainerFromItem(obj) as ItemsControl;
if (childControl != null)
{
ExpandAll(childControl, expand);
}
TreeViewItem item = childControl as TreeViewItem;
if (item != null)
item.IsExpanded = true;
}
}
private void btnExpandAll_Click(object sender, RoutedEventArgs e)
{
foreach (object item in this.myTV.Items)
{
TreeViewItem treeItem = this.myTV.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
if (treeItem != null)
ExpandAll(treeItem, true);
}
}