private static void CalculateRelativeXAndY( TreeNodeViewModel treeNode, int level, double totalModify) { foreach (TreeNodeViewModel node in treeNode.Children) { CalculateRelativeXAndY(node, level + 1, treeNode.Modify + totalModify); } if (treeNode.IsLeaf) { treeNode.X = treeNode.Prelim + totalModify; } else { treeNode.X = (treeNode.FirstChild.X + treeNode.LastChild.X) / 2; } treeNode.Y = level * (TreeNodeViewModel.Height + YGap); }