private void printNode(TreeViewItem node, TreeViewItem parent) { // printTitle(node.title) Debug.WriteLine(node.ToString()); if (parent != null) { VmIVRMenuElementBase menuParent = (VmIVRMenuElementBase)parent.Header; VmIVRMenuElementBase child = (VmIVRMenuElementBase)node.Header; menuParent.ChildMenus.Add(child); child.ParentId = menuParent.Id; child.Parent = menuParent; resList.Add(child); } else { resList = new List<VmIVRMenuElementBase>(); resList.Add((VmIVRMenuElementBase)node.Header); } foreach (TreeViewItem child in node.Items) { printNode(child, node); //<-- recursive } }