Пример #1
0
        protected void OnPopToNewRoot(IPageViewModel viewModel, bool animated)
        {
            var pref = createPageFor(viewModel);

            PageReferences.Clear();
            PageReferences.Add(pref);
            popToNewRootAsync(pref.View, animated);
        }
Пример #2
0
        async void updatePages()
        {
            if (_pages != null && _pages.Count > 0)
            {
                foreach (var pref in PageReferences.Where(p => !_pages.Contains(p.Model)).ToList())
                {
                    PageReferences.Remove(pref);
                }

                if (new[] { this.Navigation.NavigationStack.FirstOrDefault(), this.Navigation.NavigationStack.LastOrDefault(), PageReferences.LastOrDefault()?.View }
                    .All(v => v == PageReferences.FirstOrDefault()?.View))
                {
                    OnPopToRoot(Pages.LastOrDefault(), TransitionAnimationEnabled);
                }
                else
                {
                    if (Navigation.NavigationStack.Count > 0)
                    {
                        var pref = createPageFor(Pages.LastOrDefault());

                        PageReferences.Clear();
                        PageReferences.Add(pref);
                        await popToNewRootAsync(pref.View, TransitionAnimationEnabled);
                    }
                    else
                    {
                        OnPushViewModel(Pages.LastOrDefault(), TransitionAnimationEnabled);
                    }
                }
            }
            else
            {
                //At least on page should be displayed
                PageReferences.Clear();
                var blankPage = new ContentPage {
                    BackgroundColor = Color.Transparent
                };

                if (Navigation.NavigationStack.Count > 0)
                {
                    await popToNewRootAsync(blankPage, TransitionAnimationEnabled);
                }
                else
                {
                    await PushAsync(blankPage, TransitionAnimationEnabled);
                }
            }
        }