System.Windows.Controls.SelectionMultiple.SelectPageUpDown C# (CSharp) Метод

SelectPageUpDown() приватный Метод

private SelectPageUpDown ( bool down ) : bool
down bool
Результат bool
        private bool SelectPageUpDown(bool down)
        {
            List<MultiSelectTreeViewItem> items = MultiSelectTreeView.RecursiveTreeViewItemEnumerable(treeView, false, false).ToList();
            MultiSelectTreeViewItem item = GetFocusedItem();
            if (item == null)
            {
                return down ? SelectLastFromKey() : SelectFirstFromKey();
            }

            double targetY = item.TransformToAncestor(treeView).Transform(new Point()).Y;
            FrameworkElement itemContent = (FrameworkElement) item.Template.FindName("headerBorder", item);
            double offset = treeView.ActualHeight - 2 * itemContent.ActualHeight;
            if (!down) offset = -offset;
            targetY += offset;
            while (true)
            {
                var newItem = down ? treeView.GetNextItem(item, items) : treeView.GetPreviousItem(item, items);
                if (newItem == null) break;
                item = newItem;
                double itemY = item.TransformToAncestor(treeView).Transform(new Point()).Y;
                if (down && itemY > targetY ||
                    !down && itemY < targetY)
                {
                    break;
                }
            }
            return SelectFromKey(item);
        }