コード例 #1
0
ファイル: App.xaml.cs プロジェクト: vunderkind2004/mobcat
        private void RegisterServices()
        {
            var navigationService = new NavigationService();

            navigationService.RegisterViewModels(GetType().Assembly);
            BaseNavigationViewModel.RegisterService(navigationService);
        }
コード例 #2
0
        /// <inheritdoc />
        public async Task PushModalAsync(BaseNavigationViewModel viewModel)
        {
            viewModel.IsModal = true;
            var view = InstantiateView(viewModel);
            var nv   = new NavigationPage((Page)view);

            await FormsNavigation.PushModalAsync(nv);
        }
コード例 #3
0
        /// <inheritdoc />
        public async Task PushAsync(BaseNavigationViewModel viewModel, bool discardCurrent = false)
        {
            var currentPage = FormsNavigation.NavigationStack.LastOrDefault();
            var view        = InstantiateView(viewModel);
            await FormsNavigation.PushAsync((Page)view);

            if (discardCurrent && currentPage != null)
            {
                FormsNavigation.RemovePage(currentPage);
            }
        }
コード例 #4
0
        public Task PushModalAsync(BaseNavigationViewModel viewModel)
        {
            viewModel.Display = ViewModelDisplay.Modal;

            var view = InstantiateView(viewModel);

            // Most likely we're going to want to put this into a navigation page so we can have a title bar on it
            var nv = new NavigationPage((Page)view);

            return(FormsNavigation.PushModalAsync(nv));
        }
コード例 #5
0
 public void ReplaceRoot(BaseNavigationViewModel viewModel, bool withNavigationEnabled = true)
 {
     if (InstantiateView(viewModel) is Page view)
     {
         if (withNavigationEnabled)
         {
             Application.Current.MainPage = new NavigationPage(view);
         }
         else
         {
             Application.Current.MainPage = view;
         }
     }
 }
コード例 #6
0
        /// <inheritdoc />
        IViewFor InstantiateView(BaseNavigationViewModel viewModel)
        {
            // Figure out what type the view model is
            var viewModelType = viewModel.GetType();

            // look up what type of view it corresponds to
            var viewType = _viewModelViewDictionary[viewModelType];

            // instantiate it
            var view = (IViewFor)Activator.CreateInstance(viewType);

            view.ViewModel = viewModel;

            return(view);
        }
コード例 #7
0
        public async Task ReplaceAsync(BaseNavigationViewModel viewModel, bool allowSamePageSet = false)
        {
            // Ensure that we're not pushing a new page if the DetailPage is already set to this type
            if (!allowSamePageSet)
            {
                IViewFor page;

                if (DetailPage is NavigationPage)
                {
                    page = ((NavigationPage)DetailPage).RootPage as IViewFor;
                }
                else
                {
                    page = DetailPage as IViewFor;
                }

                if (page?.ViewModel.GetType() == viewModel.GetType())
                {
                    var masterController = Application.Current.MainPage as MasterDetailPage;

                    masterController.IsPresented = false;

                    return;
                }
            }

            Page newDetailPage = await Task.Run(() =>
            {
                var view = InstantiateView(viewModel);

                // Tab pages shouldn't go into navigation pages
                if (view is TabbedPage)
                {
                    newDetailPage = (Page)view;
                }
                else
                {
                    newDetailPage = new NavigationPage((Page)view);
                }

                return(newDetailPage);
            });

            DetailPage = newDetailPage;
        }
コード例 #8
0
        /// <inheritdoc />
        public void SwitchDetailPage(BaseNavigationViewModel viewModel)
        {
            var view = InstantiateView(viewModel);

            Page newDetailPage;

            // Tab pages shouldn't go into navigation pages
            if (view is TabbedPage)
            {
                newDetailPage = (Page)view;
            }
            else
            {
                newDetailPage = new NavigationPage((Page)view);
            }

            DetailPage = newDetailPage;
        }
コード例 #9
0
        public Task PushAsync(BaseNavigationViewModel viewModel)
        {
            var view = InstantiateView(viewModel);

            return(FormsNavigation.PushAsync((Page)view));
        }
コード例 #10
0
 void SetDetailViewModel(BaseNavigationViewModel vm) => Navigation.ReplaceAsync(vm);
コード例 #11
0
ファイル: MenuViewModel.cs プロジェクト: BenBtg/NicWrites
 Task OnCategorySelected(BaseNavigationViewModel user)
 {
     return(Navigation.PushAsync(user));
 }
コード例 #12
0
 /// <inheritdoc />
 public async Task PushAsync(BaseNavigationViewModel viewModel)
 {
     var view = InstantiateView(viewModel);
     await FormsNavigation.PushAsync((Page)view);
 }