Exemplo n.º 1
0
        public void SetViewModelByView(Xamarin.Forms.Page view)
        {
            if (view.BindingContext != this.BindingContext && view.BindingContext is ViewModelBase vm)
            {
                vm.OnNavigationAsync(new NavigationParameters(), NavigationType.Back);
                return;
            }
            var viewType      = view.GetType();
            var viewModelType = Type.GetType(viewType.FullName.Replace("View", "ViewModel"));

            if (viewModelType == null)
            {
                throw new Exception($"Mapping type of {viewModelType} is not a Page");
            }
            vm = ServiceLocator.Instance.Resolve(viewModelType) as ViewModelBase;
            if (vm != null)
            {
                view.BindingContext = vm;
                vm.OnNavigationAsync(new NavigationParameters(), NavigationType.New);
            }
        }
 private bool IsModal(Page page)
 {
     return IsModal(page.GetType());
 }
Exemplo n.º 3
0
        /// <summary>
        /// Resolves a View and its related ViewModel
        /// </summary>
        /// <param name="viewModelType">The ViewModel type</param>
        /// <param name="vm">The output ViewModel instance</param>
        /// <returns>The ViewModel instance</returns>
        public Xamarin.Forms.Page Resolve(Type viewModelType, out IViewModel viewModel)
        {
            var vm = _resolver.Resolve(viewModelType) as ViewModel;

            Xamarin.Forms.Application.Current.On <iOS>().SetPanGestureRecognizerShouldRecognizeSimultaneously(true);

            Xamarin.Forms.Page view = null;
            ViewMapAttribute   map  = _mappings[viewModelType];

            if (vm == null || map == null)
            {
                throw new InvalidOperationException("View Model not mapped!");
            }

            Xamarin.Forms.Page pageView = _resolver.Resolve(map.View) as Xamarin.Forms.Page;

            if (pageView == null)
            {
                string message = string.Format("Page not mapped! View Model: {0}", viewModelType);
                throw new InvalidOperationException(message);
            }

            if (map.MenuViewModel == null)
            {
                view = pageView;
                view.On <iOS>().SetUseSafeArea(true);
            }
            else
            {
                IViewModel         menuViewModel = null;
                Xamarin.Forms.Page menuView      = Resolve(map.MenuViewModel, out menuViewModel);

                if (menuView != null)
                {
                    pageView.BindingContext = vm;
                    pageView.Parent         = null;
                    menuView.Parent         = null;

                    if (string.IsNullOrWhiteSpace(menuView.Title))
                    {
                        menuView.Title = menuView.GetType().Name;
                    }

                    if (string.IsNullOrWhiteSpace(pageView.Title))
                    {
                        pageView.Title = pageView.GetType().Name;
                    }

                    view = new MasterDetailPage
                    {
                        Master = menuView,
                        Detail = pageView
                    };

                    pageView.On <iOS>().SetUseSafeArea(true);
                }
            }

            view.Title          = vm.Title;
            view.BindingContext = vm;

            if (map.HideNavigation)
            {
                Xamarin.Forms.NavigationPage.SetHasNavigationBar(view, false);
            }

            viewModel = vm;

            return(view);
        }
Exemplo n.º 4
0
 string LoadResourceText(Page demoPage, string prefix, string suffix) {
     string className = demoPage.GetType().Name;
     Assembly asm = demoPage.GetType().GetTypeInfo().Assembly;
     return LoadResourceText(prefix + className + suffix, asm);
 }
		private bool IsSameAsCurrentPage (Page page)
		{
			return (this.navigationPage.CurrentPage != null) && (this.navigationPage.CurrentPage.GetType () == page.GetType ());
		}
		protected void PagePushed(Page page)
		{
			Debug.WriteLine("PagePushed: Page={0}", page.GetType().Name);

			var navigationAware = helper.AsNavigationAware(page);
			if (navigationAware != null)
			{
				//
				navigationAware.PagePushed(page as IPage);
			}
		}
		protected void OnNavigatingFrom(Page targetView, Page nextView)
		{
			Debug.WriteLine("OnNavigatingFrom: targetView={0}, previousView={1}", targetView.GetType().Name, nextView.GetType().Name);

//			var navigationAware = helper.AsNavigationAware(targetView);
//
//			if (navigationAware != null)
//			{
//				//
//				navigationAware.OnNavigatingFrom(nextView as IPage);
//			}

			// modified 3-3-2015
			var navigationAware = helper.AsNavigationAware(nextView);

			if (navigationAware != null)
			{
				//
				navigationAware.OnNavigatingFrom(targetView as IPage);
			}
		}
		protected void OnNavigatingTo(Page targetView, Page previousView)
		{
			Debug.WriteLine("OnNavigatingTo: targetView={0}, nextView={1}", targetView.GetType().Name, previousView != null ? previousView.GetType().Name : string.Empty);

			var navigationAware = helper.AsNavigationAware(targetView);
			if (navigationAware != null)
			{
				// To page!
				navigationAware.OnNavigatingTo(targetView as IPage);
			}
		}
Exemplo n.º 9
0
		/// <summary>
		/// Called when [navigating from].
		/// </summary>
		/// <param name="targetView">The target view.</param>
		/// <param name="nextView">The next view.</param>
		protected void OnNavigatingFrom(Page targetView, Page nextView)
		{
			Debug.WriteLine("OnNavigatingFrom: targetView={0}, previousView={1}", targetView.GetType().Name, nextView.GetType().Name);

			var navigationAware = AsNavigationAware(targetView);
			if (navigationAware != null)
			{
				navigationAware.OnNavigatingFrom(nextView);
			}
		}
Exemplo n.º 10
0
        public HomeMDPMaster()
        {
            InitializeComponent();

            ListView = lst_notebooks;

            object version = "";

            App.Current.Resources.TryGetValue("version", out version);
            lbl_version.Text = version.ToString();

            mst_lock_unlock.Clicked += new EventHandler((o, e) =>
            {
                LocknoteMgr.GetInstance().SecureErase();
                ((App)Application.Current).ResumeApp();
            });
            mst_settings.Clicked += new EventHandler((o, e) =>
            {
                ((NavigationPage)((HomeMDP)Application.Current.MainPage).Detail).PushAsync(new SettingsPage());
                ((HomeMDP)Application.Current.MainPage).IsPresented = false;
            });
            mst_new_notebook.Clicked += new EventHandler((o, e) =>
            {
                TextEntryPrompt p = new TextEntryPrompt()
                {
                    IsNavPage = true, PositiveButtonText = "Create", NegativeButtonText = "Cancel", PromptTitle = "New Notebook", Hint = "A Notebook"
                };
                p.OnPromptSaved += new Prompt.PromptClosedEventListener(() =>
                {
                    LocknoteMgr.GetInstance().NoteManager.NewNotebook(p.Text);
                    LocknoteMgr.GetInstance().SaveNotebooks(true);
                    ((HomeMDP)Application.Current.MainPage).IsPresented = true;
                });
                p.Show(((HomeMDP)Application.Current.MainPage).Detail);
                ((HomeMDP)Application.Current.MainPage).IsPresented = false;
            });

            lst_notebooks.ItemTapped += new EventHandler((o, e) =>
            {
                Notebook nb             = (Notebook)o;
                SectionsPage sp         = new SectionsPage(nb);
                sp.Title                = nb.Title + " | Sections";
                sp.ListView.ItemsSource = nb.Sections;
                ((HomeMDP)Application.Current.MainPage).Detail      = new NavigationPage(sp);
                ((HomeMDP)Application.Current.MainPage).IsPresented = false;
            });

            lst_notebooks.ItemLongTapped += new LNListView.ItemLongTappedHandler((o, e) =>
            {
                Notebook nb          = (Notebook)o;
                EditNotebookPrompt p = new EditNotebookPrompt()
                {
                    Title = nb.Title, IsNavPage = true
                };
                Xamarin.Forms.Page pg = ((NavigationPage)((HomeMDP)Application.Current.MainPage).Detail).CurrentPage;
                p.OnPromptSaved      += new Prompt.PromptClosedEventListener(() =>
                {
                    nb.Title = p.Title;
                    if (pg.GetType() == typeof(SectionsPage))
                    {
                        pg.Title = p.Title + " | Sections";
                    }
                    LocknoteMgr.GetInstance().SaveNotebooks(true);
                    lst_notebooks.ItemsSource = LocknoteMgr.GetInstance().NoteManager.Notebooks;
                });
                p.DeleteClicked += new EventHandler((o2, e2) =>
                {
                    Prompt p2 = new Prompt()
                    {
                        PromptTitle = "Are you sure?", PositiveButtonText = "Yes", NegativeButtonText = "No", IsNavPage = true
                    };
                    p2.OnPromptSaved += new Prompt.PromptClosedEventListener(() =>
                    {
                        LocknoteMgr.GetInstance().NoteManager.DeleteNotebook(nb);
                        p.Dismiss();
                    });
                    p2.Show(((HomeMDP)Application.Current.MainPage).Detail);
                });
                p.Show(((HomeMDP)Application.Current.MainPage).Detail);
                ((HomeMDP)Application.Current.MainPage).IsPresented = false;
            });
        }
Exemplo n.º 11
0
        public Task PushPage(Xamarin.Forms.Page page, FreshBasePageModel model, bool modal = false, bool animate = true)
        {
            if (IsPresented)
            {
                IsPresented = false;
            }

            if (modal)
            {
                return(Detail.Navigation.PushModalAsync(page));
            }

            KeyValuePair <MenuCellData, Xamarin.Forms.Page> innerPage = _pages.FirstOrDefault(p => ((NavigationPage)p.Value).CurrentPage.GetType() == page.GetType());

            if (innerPage.Key != null)
            {
                return(Task.FromResult(ListView.SelectedItem = innerPage.Key));
            }
            return((Detail as NavigationPage).PushAsync(page, animate));
        }