protected void PushPageModel <T> (object data) where T : BasePageModel { BasePageModel pageModel = TinyIoC.TinyIoCContainer.Current.Resolve <T>();; var page = ResolvePageModel <T> (data, pageModel); pageModel.PreviousPageModel = this; IRootNavigation rootNav = TinyIoC.TinyIoCContainer.Current.Resolve <IRootNavigation> (); rootNav.PushPage(page, pageModel); }
public static Page ResolvePageModel <T>(object data, BasePageModel pageModel) where T : BasePageModel { var name = typeof(T).Name.Replace("Model", string.Empty); var pageType = Type.GetType("QuoteApp.Pages." + name); var page = (Page)TinyIoC.TinyIoCContainer.Current.Resolve(pageType); page.BindingContext = pageModel; var initMethod = TinyIoC.TypeExtensions.GetMethod(typeof(T), "Init"); if (initMethod != null) { if (initMethod.GetParameters().Length > 0) { initMethod.Invoke(pageModel, new object[] { data }); } else { initMethod.Invoke(pageModel, null); } } var vmProperty = TinyIoC.TypeExtensions.GetProperty(pageType, "PageModel"); if (vmProperty != null) { vmProperty.SetValue(page, pageModel); } var vmPageBindingContext = TinyIoC.TypeExtensions.GetProperty(pageType, "BindingContext"); if (vmPageBindingContext != null) { vmPageBindingContext.SetValue(page, pageModel); } var initMethodPage = TinyIoC.TypeExtensions.GetMethod(pageType, "Init"); if (initMethodPage != null) { initMethodPage.Invoke(page, null); } return(page); }