/// <summary> /// 遍历某节点下的所有节点 /// </summary> /// <param name="node"></param> /// <param name="action"></param> public static void traveseNode(PropertyNodeItem node, Action <PropertyNodeItem> action) { foreach (PropertyNodeItem child in node.Children) { traveseNode(child, action); } action(node); }
//子节点构造函数 public PropertyNodeItem(String name, String displayName, Layer layer, PropertyNodeItem parent) { Children = new List <PropertyNodeItem>(); this.nodeType = NodeType.LeafNode; this.Name = name; this.DisplayName = displayName; this.layer = layer; this.parent = parent; this.level = this.parent.level + 1; isChecked = true; }
/// <summary> /// 寻找某个节点 /// </summary> /// <param name="roots"></param> /// <param name="predicate"></param> /// <returns></returns> public static PropertyNodeItem findNode(List <PropertyNodeItem> roots, Predicate <PropertyNodeItem> predicate) { PropertyNodeItem result = null; foreach (PropertyNodeItem root in roots) { result = findNode(root, predicate); if (result != null) { break; } } return(result); }
/// <summary> /// 寻找某个节点 /// </summary> /// <param name="root"></param> /// <param name="predicate"></param> /// <returns></returns> public static PropertyNodeItem findNode(PropertyNodeItem root, Predicate <PropertyNodeItem> predicate) { foreach (PropertyNodeItem child in root.Children) { if (predicate(child)) { return(child); } else { findNode(child, predicate); } } return(null); }