Beispiel #1
0
        static bool Remove(ObservableList <TreeNode <TItem> > nodes, Predicate <TreeNode <TItem> > match)
        {
            var index = nodes.FindIndex(match);

            if (index != -1)
            {
                nodes.RemoveAt(index);
                return(true);
            }

            foreach (var node in nodes)
            {
                if (node.Nodes == null)
                {
                    continue;
                }

                if (Remove(node.Nodes, match))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #2
0
 /// <summary>
 /// Recalculates the selected indices.
 /// </summary>
 /// <returns>The selected indices.</returns>
 /// <param name="newItems">New items.</param>
 protected override List <int> RecalculateSelectedIndices(ObservableList <ListNode <TItem> > newItems)
 {
     if (DeselectCollapsedNodes)
     {
         return(base.RecalculateSelectedIndices(newItems));
     }
     else
     {
         return(selectedNodes.Select <TreeNode <TItem>, int>(x => newItems.FindIndex(l => l.Node == x)).Where(x => x != -1).ToList());
     }
 }
Beispiel #3
0
        /// <summary>
        /// Recalculates the selected indices.
        /// </summary>
        /// <returns>The selected indices.</returns>
        /// <param name="newItems">New items.</param>
        protected override List <int> RecalculateSelectedIndices(ObservableList <ListNode <TItem> > newItems)
        {
            if (DeselectCollapsedNodes)
            {
                return(base.RecalculateSelectedIndices(newItems));
            }
            else
            {
                var indices = new List <int>();

                foreach (var node in selectedNodes)
                {
                    var index = newItems.FindIndex(l => l.Node == node);
                    if (index != -1)
                    {
                        indices.Add(index);
                    }
                }

                return(indices);
            }
        }
Beispiel #4
0
 /// <summary>
 /// Get indicies of specified nodes.
 /// </summary>
 /// <returns>The indicies.</returns>
 /// <param name="targetNodes">Target nodes.</param>
 protected List <int> Nodes2Indicies(IEnumerable <TreeNode <TItem> > targetNodes)
 {
     return(targetNodes.Select(x => NodesList.FindIndex(y => x == y.Node)).Where(i => i != -1).ToList());
 }