Exemple #1
0
        private bool IsBroken(LogicalMainTrack result, LogicalMainTrack current)
        {
            if (result.IsEof || current.IsEof)
            {
                return(true);
            }

            if (result.IsContainer)
            {
                if (IsVirtualized(result.ContainerOrdinal))
                {
                    return(true);
                }

                return(IsBrokenToContainer(current));
            }
            else if (result.IsHead)
            {
                return(IsBrokenToHead(current));
            }
            else
            {
                Debug.Assert(result.IsTail);
                return(IsBrokenToTail(current));
            }
        }
Exemple #2
0
        private int GetPageTailContainerOrdinal(bool enforceCurrent)
        {
            if (ContainerViewList.Count == 0)
            {
                return(-1);
            }

            var containerOrdinal = ContainerViewList.Last.ContainerOrdinal;
            var endTrack         = GridTracksMain.GetGridSpan(Template.ContainerRange).EndTrack;
            var endGridExtent    = new LogicalMainTrack(endTrack, ContainerViewList.Last).EndGridExtent;
            var isClipped        = IsTailClippedMain(endGridExtent);

            if (PreviousContainerAsPageTail(containerOrdinal, isClipped, enforceCurrent))
            {
                containerOrdinal--;
                endGridExtent -= ContainerTracksCountMain;
                isClipped      = false;
            }

            if (enforceCurrent && isClipped)
            {
                ScrollToMain(endGridExtent - 1, 1, GridPlacement.Tail, false);
            }
            return(containerOrdinal);
        }
Exemple #3
0
        private int GetPageHeadContainerOrdinal(bool enforceCurrent)
        {
            if (ContainerViewList.Count == 0)
            {
                return(-1);
            }

            var containerOrdinal = ContainerViewList.First.ContainerOrdinal;
            var startTrack       = GridTracksMain.GetGridSpan(Template.ContainerRange).StartTrack;
            var startGridExtent  = new LogicalMainTrack(startTrack, ContainerViewList.First).StartGridExtent;
            var isClipped        = IsHeadClippedMain(startGridExtent);

            if (NextContainerAsPageHeader(containerOrdinal, isClipped, enforceCurrent))
            {
                containerOrdinal++;
                startGridExtent += ContainerTracksCountMain;
                isClipped        = false;
            }

            if (enforceCurrent && isClipped)
            {
                ScrollToMain(startGridExtent, 0, GridPlacement.Head, false);
            }
            return(containerOrdinal);
        }
Exemple #4
0
        private double GetRelativePositionMain(ContainerView containerView, GridTrack gridTrack, double fraction)
        {
            Debug.Assert(gridTrack.IsContainer);
            Debug.Assert(fraction >= 0 && fraction <= 1);

            var result = GetRelativePositionMain(containerView, gridTrack);

            if (fraction > 0)
            {
                result += new LogicalMainTrack(gridTrack, containerView).Length *fraction;
            }
            return(result);
        }
Exemple #5
0
 private bool IsBrokenToHead(LogicalMainTrack track)
 {
     Debug.Assert(!track.IsEof);
     if (track.IsHead)
     {
         return(false);
     }
     else if (track.IsContainer)
     {
         return(IsFirstRowVirtualized);
     }
     else
     {
         Debug.Assert(track.IsTail);
         return(ContainerViewList.Count > 0);
     }
 }
Exemple #6
0
 private bool IsBrokenToContainer(LogicalMainTrack track)
 {
     Debug.Assert(!track.IsEof);
     if (track.IsContainer)
     {
         return(IsVirtualized(track.ContainerOrdinal));
     }
     else if (track.IsHead)
     {
         return(IsFirstRowVirtualized);
     }
     else
     {
         Debug.Assert(track.IsTail);
         return(!IsLastRowVirtualized);
     }
 }