public void RefreshTree() { Nodes.Clear(); if (ContentObject != null) { var root = new HolderTreeNode("Root", ContentObject); Nodes.Add(root); Populate(root); ExpandAll(); } }
private static void Populate(HolderTreeNode node) { if (node.Content != null) { if (node.Content.GetType().Namespace == RestrictionNamespace) { foreach (var p in node.Content.GetType().GetProperties()) { object val = p.GetValue(node.Content); if (val != null) { Type t = val.GetType(); if ((p.Name == "Items") || ((t.Namespace == RestrictionNamespace) && t.IsClass)) { if (t.IsArray) { var i = 0; foreach (var item in (IEnumerable)val) { var n = new HolderTreeNode(p.Name + "[" + i + "]", item); node.Nodes.Add(n); Populate(n); i++; } } else { var n = new HolderTreeNode(p.Name, val); node.Nodes.Add(n); Populate(n); } } } } } } }