public static void OnViewDestroy(this IMvxMacView winRTView) { if (winRTView.ViewModel != null) { winRTView.ViewModel.UnRegisterView(winRTView); } }
private static IMvxViewModel LoadViewModel(this IMvxMacView macView) { if (macView.Request == null) { MvxLog.Instance.Trace( "Request is null - assuming this is a TabBar type situation where ViewDidLoad is called during construction... patching the request now - but watch out for problems with virtual calls during construction"); macView.Request = Mvx.Resolve <IMvxCurrentRequest>().CurrentRequest; } var instanceRequest = macView.Request as MvxViewModelInstanceRequest; if (instanceRequest != null) { return(instanceRequest.ViewModelInstance); } var loader = Mvx.Resolve <IMvxViewModelLoader>(); var viewModel = loader.LoadViewModel(macView.Request, null /* no saved state on iOS currently */); if (viewModel == null) { throw new MvxException("ViewModel not loaded for " + macView.Request.ViewModelType); } return(viewModel); }
public static IMvxMacView CreateViewControllerFor <TTargetViewModel>(this IMvxMacView view, object parameterObject) where TTargetViewModel : class, IMvxViewModel { return (view.CreateViewControllerFor <TTargetViewModel>(parameterObject?.ToSimplePropertyDictionary())); }
public static IMvxMacView CreateViewControllerFor <TTargetViewModel>( this IMvxMacView view, MvxViewModelRequest request) where TTargetViewModel : class, IMvxViewModel { return(Mvx.Resolve <IMvxMacViewCreator>().CreateView(request)); }
protected virtual void Show(IMvxMacView view, MvxViewModelRequest request) { var viewController = view as NSViewController; if (viewController == null) throw new MvxException("Passed in IMvxTouchView is not a UIViewController"); Show(viewController, request); }
public static IMvxMacView CreateViewControllerFor <TTargetViewModel>( this IMvxMacView view, IDictionary <string, string> parameterValues = null) where TTargetViewModel : class, IMvxViewModel { var parameterBundle = new MvxBundle(parameterValues); var request = new MvxViewModelRequest <TTargetViewModel>(parameterBundle, null); return(view.CreateViewControllerFor(request)); }
protected virtual void Show(IMvxMacView view, MvxViewModelRequest request) { var viewController = view as NSViewController; if (viewController == null) { throw new MvxException("Passed in IMvxMacView is not a UIViewController"); } this.Show(viewController, request); }
public static void OnViewCreate(this IMvxMacView macView, Func <IMvxViewModel> viewModelLoader) { if (macView.ViewModel != null) { return; } var viewModel = viewModelLoader(); viewModel.RegisterView(macView); macView.ViewModel = viewModel; }
private static IMvxViewModel LoadViewModel(this IMvxMacView macView, MvxShowViewModelRequest viewModelRequest) { if (viewModelRequest.ClearTop) { #warning TODO - BackStack not cleared for Mac //phoneView.ClearBackStack(); } var loaderService = Mvx.Resolve <IMvxViewModelLoader>(); var viewModel = loaderService.LoadViewModel(viewModelRequest); return(viewModel); }
protected virtual void Show(IMvxMacView view, MvxViewModelRequest request) { var viewController = view as NSViewController; var attribute = GetPresentationAttributes(viewController); Action <NSViewController, MvxBasePresentationAttribute, MvxViewModelRequest> showAction; if (!AttributeTypesToShowMethodDictionary.TryGetValue(attribute.GetType(), out showAction)) { throw new KeyNotFoundException($"The type {attribute.GetType().Name} is not configured in the presenter dictionary"); } showAction.Invoke(viewController, attribute, request); }
public static void OnViewCreate(this IMvxMacView macView) { //var view = touchView as IMvxView<TViewModel>; macView.OnViewCreate(() => { return(macView.LoadViewModel()); }); }
public static void OnViewCreate(this IMvxMacView macView, MvxShowViewModelRequest viewModelRequest) { macView.OnViewCreate(() => { return(macView.LoadViewModel(viewModelRequest)); }); }
public static IMvxMacView CreateViewControllerFor( this IMvxMacView view, IMvxViewModel viewModel) { return(Mvx.Resolve <IMvxMacViewCreator>().CreateView(viewModel)); }
public static IMvxMacView CreateViewControllerFor( this IMvxMacView view, MvxViewModelRequest request) { return(Mvx.Resolve <IMvxMacViewCreator>().CreateView(request)); }