/// <summary> /// Calculate the distance between this TreeViewItem and the item being /// paged from. /// </summary> /// <param name="up"> /// A value indicating whether the page should be scrolled up. /// </param> /// <param name="element">The element being paged from.</param> /// <param name="scrollHost">The ScrollViewer being scrolled.</param> /// <param name="top">The top of item to start from.</param> /// <param name="bottom">The bottom of the item to start from.</param> /// <param name="closeEdge"> /// The distance between the top/bottom of one item to the other. /// </param> /// <returns> /// A value indicating whether the scroll was handled. /// </returns> private static double CalculateDelta(bool up, FrameworkElement element, ScrollViewer scrollHost, double top, double bottom, out double closeEdge) { double elementTop, elementBottom; element.GetTopAndBottom(scrollHost, out elementTop, out elementBottom); if (up) { closeEdge = bottom - elementBottom; return bottom - elementTop; } else { closeEdge = elementTop - top; return elementBottom - top; } }