public override void DefaultVisit(TreeNodeViewModel node) { if (node == null || SortContext == null) { return; } node.ChildrenSortType = SortContext.SortType; node.ChildrenSortDirection = SortContext.SortDirection; if (node.Children.Count == 0) { return; } else if (node.Children.Count > 1) //Optimization for single element collections - do not sort and reset them { var sorted = NodesSorter.SortNodes(node.Children, SortContext.SortType, SortContext.SortDirection) ?.ToList(capacity: node.Children.Count) ?? Enumerable.Empty <TreeNodeViewModel>(); node.Children.Reset(sorted); } if (SortContext.SortDescendants) { base.DefaultVisit(node); } }
public override List <TreeNodeViewModel> DefaultVisit(TreeNodeViewModel node, IEnumerable <TreeNodeViewModel> generatedChildren) { if (node == null) { return(base.DefaultVisit(node, generatedChildren)); } node.ChildrenSortType = SortType; node.ChildrenSortDirection = SortDirection; return(!generatedChildren.IsNullOrEmpty() ? NodesSorter.SortNodes(generatedChildren, SortType, SortDirection) : base.DefaultVisit(node, generatedChildren)); }