Пример #1
0
        private void UpdateCanvas(FixedPagePresenter presenter, SinglePageInfo pageInfo, Point scrollOffset, Rect viewport)
        {
            Canvas.SetLeft(presenter, pageInfo.PositionInView.X - scrollOffset.X);

            double offset = pageInfo.PositionInView.Y - scrollOffset.Y;

            if (offset > pageInfo.VerticalOffset || (offset > 0 && offset < pageInfo.VerticalOffset))
            {
                Canvas.SetTop(presenter, pageInfo.VerticalOffset);
                return;
            }
            else if (offset < 0)
            {
                double totalheight   = pageInfo.BottomPositionInView - pageInfo.TopPositionInView;
                double heightOutside = -offset;
                double heightInside  = totalheight - heightOutside;
                if (heightInside < viewport.Height)
                {
                    Canvas.SetTop(presenter, viewport.Height - totalheight);
                    return;
                }
            }

            Canvas.SetTop(presenter, offset);
        }
        private void UpdateCanvas(FixedPagePresenter presenter, SinglePageInfo pageInfo, Point scrollOffset, Rect viewport)
        { 
            Canvas.SetLeft(presenter, pageInfo.PositionInView.X - scrollOffset.X);

            double offset = pageInfo.PositionInView.Y - scrollOffset.Y;
            if (offset > pageInfo.VerticalOffset || (offset > 0 && offset < pageInfo.VerticalOffset))
            {
                Canvas.SetTop(presenter, pageInfo.VerticalOffset);
                return;
            }
            else if (offset < 0)
            {
                double totalheight = pageInfo.BottomPositionInView - pageInfo.TopPositionInView;
                double heightOutside = -offset;
                double heightInside = totalheight - heightOutside;
                if (heightInside < viewport.Height)
                {
                    Canvas.SetTop(presenter, viewport.Height - totalheight);
                    return;
                }
            }

            Canvas.SetTop(presenter, offset);
        }