Видел ещё подобный пример:
private static void ExpandRecursively(ItemsControl itemsControl, bool expand)
{
ItemContainerGenerator itemContainerGenerator = itemsControl.ItemContainerGenerator;
for (int i = itemsControl.Items.Count - 1; i >= 0; --i)
{
ItemsControl childControl = itemContainerGenerator.ContainerFromIndex(i) as ItemsControl;
if (childControl != null) ExpandRecursively(childControl, expand);
}
TreeViewItem treeViewItem = itemsControl as TreeViewItem;
if (treeViewItem != null)
treeViewItem.IsExpanded = expand;
}