public Page Map <TViewModel>(TViewModel viewModel) where TViewModel : class
        {
            Page result = null;

            switch (viewModel)
            {
            case AnmeldenViewModel mainViewModel:
                result = new AnmeldenView();
                result.BindingContext = mainViewModel;
                break;

            case DashboardViewModel dashboardViewModel:
                result = new DashboardView();
                result.BindingContext = dashboardViewModel;
                dashboardViewModel.Update();
                break;

            case StundenplanViewModel stundenplanViewModel:
                result = new StundenplanView();
                result.BindingContext = stundenplanViewModel;
                stundenplanViewModel.Update(true);
                break;

            case MeldungViewModel meldungViewModel:
                result = new MeldungView();
                result.BindingContext = meldungViewModel;
                break;

            case AbwesenheitViewModel abwesenheitViewModel:
                result = new AbwesenheitView();
                result.BindingContext = abwesenheitViewModel;
                break;

            case VerspaetungViewModel verspaetungViewModel:
                result = new VerspaetungView();
                result.BindingContext = verspaetungViewModel;
                break;

            case MeldungenAnzeigenViewModel meldungenAnzeigenViewModel:
                result = new MeldungenAnzeigenView();
                result.BindingContext = meldungenAnzeigenViewModel;
                meldungenAnzeigenViewModel.Update();
                break;
            }


            return(result);
        }
        public App()
        {
            InitializeComponent();

            //TODO prüfen ob abgeschlossen (sealed)
            if (!DesignMode.IsDesignModeEnabled)
            {
                var mainPage = new AnmeldenView();

                var navigationPage = new NavigationPage(mainPage);
                var userContext    = new UserContext();

                HttpClient httpClient = new HttpClient((new HttpClientHandler()))
                {
                    BaseAddress = new Uri("http://10.0.2.2:55939")
                };

                Services.RegisterInstance(navigationPage.Navigation);
                Services.Register <IViewMapper, ViewMapper>(Lifestyle.Singleton);
                Services.RegisterInstance(httpClient);
                Services.RegisterInstance(userContext);

                Services.Register <DashboardViewModel>(Lifestyle.Singleton);
                Services.Register <DashboardMeldungenViewModel>(Lifestyle.Singleton);
                Services.Register <DashboardTermineViewModel>(Lifestyle.Singleton);
                Services.Register <StundenplanViewModel>(Lifestyle.Singleton);
                Services.Register <MeldungenAnzeigenViewModel>(Lifestyle.Singleton);
                Services.Register <MeldungViewModel>(Lifestyle.Singleton);
                Services.Register <AbwesenheitViewModel>(Lifestyle.Singleton);
                Services.Register <VerspaetungViewModel>(Lifestyle.Singleton);

                // Setup the initial binding context
                mainPage.BindingContext = Services.GetInstance <AnmeldenViewModel>();
                Services.Verify();
                // Assign the main page
                MainPage = navigationPage;
            }
        }