private async Task InternalNavigateToAsync(Type viewModelType, object parameter)
        {
            Page page = CreatePage(viewModelType);

            if (page is MainView)
            {
                Application.Current.MainPage = new CustomNavigationView(page);
            }
            else
            {
                CustomNavigationView navigationPage = Application.Current.MainPage as CustomNavigationView;
                if (navigationPage != null)
                {
                    await navigationPage.PushAsync(page);
                }
                else
                {
                    Application.Current.MainPage = new CustomNavigationView(page);
                }
            }

            // Pass parameter in..

            await(page.BindingContext as ViewModelBase).InitializeAsync(parameter);
        }
        public async Task GoBackAsync()
        {
            CustomNavigationView navigationPage = Application.Current.MainPage as CustomNavigationView;

            if (navigationPage != null)
            {
                await navigationPage.PopAsync();
            }
        }
Beispiel #3
0
        private Task InitializeApplication()
        {
            ViewModelLocator.RegisterDependencies();

            var page = ViewModelLocator.CreatePage <MainViewModel>();

            MainPage = new CustomNavigationView(page);

            return((page.BindingContext as MainViewModel).InitializeAsync(null));
        }
Beispiel #4
0
        public async Task GoBackAsync(object arguments)
        {
            await GoBackAsync();

            CustomNavigationView mainPage = Application.Current.MainPage as CustomNavigationView;

            if (mainPage.CurrentPage.BindingContext is ViewModelBase viewModel)
            {
                await viewModel.InitializeAsync(arguments);
            }
        }
Beispiel #5
0
 public void InitAfterResumeApp()
 {
     try {
         CustomNavigationView customNavigationView = Application.Current.MainPage as CustomNavigationView;
         customNavigationView.Navigation.NavigationStack
         .Select(p => (ViewModelBase)p.BindingContext)
         .ToList().ForEach(viewModel => viewModel.InitializeAsync(null));
     } catch (Exception ex) {
         Crashes.TrackError(ex);
         Debugger.Break();
     }
 }
Beispiel #6
0
        public App()
        {
            InitializeComponent();

            InitApp();

            if (Device.RuntimePlatform == Device.UWP)
            {
                InitNavigation();
            }
            MainPage = new CustomNavigationView(new MainMenuView());
        }
Beispiel #7
0
        public void UnsubscribeAfterSleepApp()
        {
            try {
                CustomNavigationView customNavigationView = Application.Current.MainPage as CustomNavigationView;

                SleepAppArg sleepAppArg = new SleepAppArg();

                customNavigationView.Navigation.NavigationStack
                .Select <Page, ViewModelBase>(p => (ViewModelBase)p.BindingContext)
                .ToList <ViewModelBase>().ForEach(viewModel => viewModel.InitializeAsync(sleepAppArg));
            } catch (Exception ex) {
                Crashes.TrackError(ex);
                Debugger.Break();
            }
        }
Beispiel #8
0
        private async Task InternalNavigateToAsync(Type viewModelType, object parameter)
        {
            Page page = CreatePage(viewModelType, parameter);

            if (page is MainView)
            {
                Application.Current.MainPage = page;
            }
            else if (page is LoginView)
            {
                Application.Current.MainPage = new CustomNavigationView(page);
            }
            else if (Application.Current.MainPage is MainView)
            {
                var mainPage       = Application.Current.MainPage as MainView;
                var navigationPage = mainPage.Detail as CustomNavigationView;

                if (viewModelType == typeof(SalesManagementViewModel) || viewModelType == typeof(DashboardViewModel) ||
                    viewModelType == typeof(AddressDetailViewModel) || navigationPage == null)
                {
                    navigationPage  = new CustomNavigationView(page);
                    mainPage.Detail = navigationPage;
                }
                else
                {
                    await navigationPage.PushAsync(page);
                }

                mainPage.IsPresented = false;
            }
            else
            {
                var navigationPage = Application.Current.MainPage as CustomNavigationView;
                if (navigationPage != null)
                {
                    await navigationPage.PushAsync(page);
                }
                else
                {
                    Application.Current.MainPage = new CustomNavigationView(page);
                }
            }

            await(page.BindingContext as ViewModelBase).InitializeAsync(parameter);
        }
Beispiel #9
0
        protected virtual async Task InternalNavigateToAsync(Type viewModelType, object parameter)
        {
            Page page = CreateAndBindPage(viewModelType, parameter);

            if (page is MainView)
            {
                CurrentApplication.MainPage = page;
            }
            else if (page is LoginView)
            {
                CurrentApplication.MainPage = new CustomNavigationView(page);
            }
            else if (CurrentApplication.MainPage is MainView)
            {
                var mainPage       = CurrentApplication.MainPage as MainView;
                var navigationPage = mainPage.Detail as CustomNavigationView;

                if (navigationPage != null)
                {
                    await navigationPage.PushAsync(page);
                }
                else
                {
                    navigationPage  = new CustomNavigationView(page);
                    mainPage.Detail = navigationPage;
                }

                mainPage.IsPresented = false;
            }
            else
            {
                var navigationPage = CurrentApplication.MainPage as CustomNavigationView;

                if (navigationPage != null)
                {
                    await navigationPage.PushAsync(page);
                }
                else
                {
                    CurrentApplication.MainPage = new CustomNavigationView(page);
                }
            }

            await(page.BindingContext as ViewModelBase).InitializeAsync(parameter);
        }
Beispiel #10
0
 private bool NotAlreadyOpened(Page currentPage, CustomNavigationView navigationPage)
 {
     return(navigationPage.Navigation.NavigationStack.Count == 0 ||
            navigationPage.Navigation.NavigationStack.Last().GetType() != currentPage.GetType());
 }
Beispiel #11
0
        public App()
        {
            InitializeComponent();

            MainPage = new CustomNavigationView(new TimelineView());
        }