Ejemplo n.º 1
0
        public static Page ResolveViewModel <T>(object data, BasePageModel viewModel)
            where T : BasePageModel
        {
            var name     = typeof(T).Name.Replace("Model", string.Empty);
            var pageType = Type.GetType("JellyBeanTracker.Mobile.Pages." + name);
            var page     = (Page)TinyIoC.TinyIoCContainer.Current.Resolve(pageType);

            page.BindingContext = viewModel;

            var initMethod = TinyIoC.TypeExtensions.GetMethod(typeof(T), "Init");

            if (initMethod != null)
            {
                if (initMethod.GetParameters().Length > 0)
                {
                    if (data == null)
                    {
                        data = new object();
                    }

                    initMethod.Invoke(viewModel, new object[] { data });
                }
                else
                {
                    initMethod.Invoke(viewModel, null);
                }
            }

            var vmProperty = TinyIoC.TypeExtensions.GetProperty(pageType, "PageModel");

            if (vmProperty != null)
            {
                vmProperty.SetValue(page, viewModel);
            }

            var vmPageBindingContext = TinyIoC.TypeExtensions.GetProperty(pageType, "BindingContext");

            if (vmPageBindingContext != null)
            {
                vmPageBindingContext.SetValue(page, viewModel);
            }

            var initMethodPage = TinyIoC.TypeExtensions.GetMethod(pageType, "Init");

            if (initMethodPage != null)
            {
                initMethodPage.Invoke(page, null);
            }

            return(page);
        }
Ejemplo n.º 2
0
        protected void PushViewModel <T> (object data, bool model = false) where T : BasePageModel
        {
            BasePageModel viewModel = TinyIoC.TinyIoCContainer.Current.Resolve <T>();;

            var page = ResolveViewModel <T> (data, viewModel);

            viewModel.PreviousViewModel = this;

            ITabbedNavigation tabbedNav = TinyIoC.TinyIoCContainer.Current.Resolve <ITabbedNavigation> ();

            if (!model)
            {
                tabbedNav.PushView(viewModel, page, model);
            }
            else
            {
                var navContainer = new BaseNav(page);
                tabbedNav.PushView(viewModel, navContainer, model);
            }
        }