/// <summary> /// Reentrant version of Collapse/Expand Node /// </summary> /// <param name="Item"></param> /// <param name="ExpandNode"></param> private bool FindModuleInTree(ModuleTreeViewItem Item, DisplayModuleInfo Module) { if (Item.GetTreeNodeHeaderName(Dependencies.Properties.Settings.Default.FullPath) == Module.ModuleName) { ExpandAllParentNode(Item.Parent as ModuleTreeViewItem); Item.IsSelected = true; Item.BringIntoView(); Item.Focus(); return(true); } // BFS style search -> return the first matching node with the lowest "depth" foreach (ModuleTreeViewItem ChildItem in Item.Items) { if (ChildItem.GetTreeNodeHeaderName(Dependencies.Properties.Settings.Default.FullPath) == Module.ModuleName) { ExpandAllParentNode(Item); ChildItem.IsSelected = true; ChildItem.BringIntoView(); ChildItem.Focus(); return(true); } } foreach (ModuleTreeViewItem ChildItem in Item.Items) { // early exit as soon as we find a matching node if (FindModuleInTree(ChildItem, Module)) { return(true); } } return(false); }