void PopCallback(NavigationPopInfo popInfo)
 {
     if (popInfo == null)
     {
         throw new ArgumentNullException(nameof(popInfo));
     }
     Pop(popInfo);
 }
        public virtual Task Pop(NavigationPopInfo popInfo)
        {
            switch (popInfo.Mode)
            {
            case NavigationMode.Normal:
                return(PopNormal(popInfo));

            case NavigationMode.Modal:
                return(PopModal(popInfo));

            case NavigationMode.Custom:
                return(PopCustom(popInfo));

            case NavigationMode.PopUp:
                return(PopPopUp(popInfo));

            case NavigationMode.Root:
                return(PopRoot(popInfo));

            default:
                throw new NotImplementedException();
            }
        }
 protected abstract Task <bool> PopCustom(NavigationPopInfo popInfo);
 protected abstract Task <bool> PopRoot(NavigationPopInfo popInfo);
 protected abstract Task <bool> PopModal(NavigationPopInfo popInfo);