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()));
 }
Beispiel #4
0
 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));
        }
Beispiel #7
0
        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);
        }
Beispiel #10
0
        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)); });
 }
Beispiel #13
0
 public static IMvxMacView CreateViewControllerFor(
     this IMvxMacView view,
     IMvxViewModel viewModel)
 {
     return(Mvx.Resolve <IMvxMacViewCreator>().CreateView(viewModel));
 }
Beispiel #14
0
 public static IMvxMacView CreateViewControllerFor(
     this IMvxMacView view,
     MvxViewModelRequest request)
 {
     return(Mvx.Resolve <IMvxMacViewCreator>().CreateView(request));
 }