Exemplo n.º 1
0
        /// <summary>
        /// Selects everything between SelectionStart and the given item.
        /// </summary>
        internal void MultiSelectTo(TreeListViewItem to)
        {
            if (SelectionStart == null)
            {
                return;
            }
            var  from    = SelectionStart;
            bool inRange = false;

            foreach (var item in this.EnumerateItems(i => i.IsExpanded))
            {
                if (item == to || item == from)
                {
                    if (inRange)
                    {
                        break;
                    }
                    else
                    {
                        inRange = true;
                    }
                }
                else if (inRange)
                {
                    item.IsMultiSelected = true;
                }
            }

            to.IsMultiSelected   = true;
            from.IsMultiSelected = true;
        }
Exemplo n.º 2
0
        public static IEnumerable <TreeListViewItem> EnumerateChildren(this TreeListViewItem item,
                                                                       Func <TreeListViewItem, bool> walkChildren)
        {
            foreach (var child in item.Items)
            {
                var tvi = (TreeListViewItem)item.ItemContainerGenerator.ContainerFromItem(child);
                if (tvi != null)
                {
                    yield return(tvi);

                    if (walkChildren(tvi))
                    {
                        foreach (var sub in EnumerateChildren(tvi, walkChildren))
                        {
                            yield return(sub);
                        }
                    }
                }
            }
        }