Example #1
0
        private UIViewController ResolveView(IRoutableViewModel viewModel, string contract)
        {
            if (viewModel == null)
            {
                return(null);
            }

            var viewLocator = this.ViewLocator ?? ReactiveUI.ViewLocator.Current;
            var view        = viewLocator.ResolveView(viewModel, contract);

            if (view == null)
            {
                throw new Exception(
                          string.Format(
                              "Couldn't find a view for view model. You probably need to register an IViewFor<{0}>",
                              viewModel.GetType().Name));
            }

            view.ViewModel = viewModel;
            var viewController = view as UIViewController;

            if (viewController == null)
            {
                throw new Exception(
                          string.Format(
                              "View type {0} for view model type {1} is not a UIViewController",
                              view.GetType().Name,
                              viewModel.GetType().Name));
            }

            return(viewController);
        }
Example #2
0
        protected IObservable <Page> PageForViewModel(IRoutableViewModel vm)
        {
            if (vm == null)
            {
                return(Observable.Empty <Page>());
            }

            var ret = ViewLocator.Current.ResolveView(vm);

            if (ret == null)
            {
                var msg = String.Format(
                    "Couldn't find a View for ViewModel. You probably need to register an IViewFor<{0}>",
                    vm.GetType().Name);

                return(Observable.Throw <Page>(new Exception(msg)));
            }

            ret.ViewModel = vm;

            var pg = (Page)ret;

            pg.Title = vm.UrlPathSegment;
            return(Observable.Return(pg));
        }
Example #3
0
        protected IObservable<Page> PageForViewModel(IRoutableViewModel vm)
        {
            if (vm == null) return Observable.Empty<Page>();

            var ret = ViewLocator.Current.ResolveView(vm);
            if (ret == null) {
                var msg = String.Format(
                    "Couldn't find a View for ViewModel. You probably need to register an IViewFor<{0}>",
                    vm.GetType().Name);

                return Observable.Throw<Page>(new Exception(msg));
            }

            ret.ViewModel = vm;

            var pg = (Page)ret;
            pg.Title = vm.UrlPathSegment;
            return Observable.Return(pg);
        }
Example #4
0
        private UIViewController ResolveView (IRoutableViewModel viewModel, string contract)
        {
            if (viewModel == null) {
                return null;
            }

            var viewLocator = this.ViewLocator ?? ReactiveUI.ViewLocator.Current;
            var view = viewLocator.ResolveView (viewModel, contract);

            if (view == null) {
                throw new Exception (
                    string.Format (
                        "Couldn't find a view for view model. You probably need to register an IViewFor<{0}>",
                        viewModel.GetType ().Name));
            }

            view.ViewModel = viewModel;
            var viewController = view as UIViewController;

            if (viewController == null) {
                throw new Exception (
                    string.Format (
                        "View type {0} for view model type {1} is not a UIViewController",
                        view.GetType ().Name,
                        viewModel.GetType ().Name));
            }

            return viewController;
        }