private void ExpandNextItemInQueueAndSelectIfLastItem(ItemCollection items, ItemContainerGenerator itemContainerGenerator) { var sampleName = _queueOfIndividualnodesToExpandAndSelectTheLast.Dequeue(); var sample = items.FirstOrDefault(s => ( ((s is Sample) && ((Sample)s).Name == sampleName) || ((s is Group) && ((Group)s).Name == sampleName)) ); if (sample == null) return; var container = (TreeViewItem)itemContainerGenerator.ContainerFromItem(sample); if (_queueOfIndividualnodesToExpandAndSelectTheLast.Count == 0) { container.IsSelected = true; } else { ExpandNextItemInQueueAndSelectIfLastItem(container.Items, container.ItemContainerGenerator); } }