public override bool MoveToNextFlatNode() { if (this.node == null) { return(false); } TreeGridNode nextNode = this.node; if (nextNode.IsExpanded && nextNode.items.Count > 0) { // We're on a node that is expanded. Move to its first child. nextNode = nextNode.GetOrCreateChildNode(0); } else { while (nextNode.Parent == null || nextNode.childIndex == nextNode.Parent.items.Count - 1) { // Reached the end of this node. Pop up a level. If we're already at the top, we're done. if (nextNode.Parent == null) { return(false); } nextNode = nextNode.Parent; } nextNode = nextNode.Parent.GetOrCreateChildNode(nextNode.childIndex + 1); } nextNode.AddExternalReference(); this.node.ReleaseExternalReference(); this.node = nextNode; return(true); }
static TreeGridNode FindLastNode(TreeGridNode node) { if (node.IsExpanded && node.items != null && node.items.Count > 0) { var lastChild = node.GetOrCreateChildNode(node.items.Count - 1); return(FindLastNode(lastChild)); } return(node); }
static TreeGridNode FindLastNode(TreeGridNode node) { if (node.IsExpanded && node.items != null && node.items.Count > 0) { var lastChild = node.GetOrCreateChildNode(node.items.Count - 1); return FindLastNode(lastChild); } return node; }