当前位置: 首页>>代码示例>>C#>>正文


C# ViewModels.MvxViewModelRequest类代码示例

本文整理汇总了C#中Cirrious.MvvmCross.ViewModels.MvxViewModelRequest的典型用法代码示例。如果您正苦于以下问题:C# MvxViewModelRequest类的具体用法?C# MvxViewModelRequest怎么用?C# MvxViewModelRequest使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


MvxViewModelRequest类属于Cirrious.MvvmCross.ViewModels命名空间,在下文中一共展示了MvxViewModelRequest类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: PrepareFragment

		protected void PrepareFragment (IMvxFragmentView fragment, MvxViewModelRequest request)
		{
			var loaderService = Mvx.Resolve<IMvxViewModelLoader> ();
			var viewModel = loaderService.LoadViewModel (request, null);

			fragment.ViewModel = viewModel;
		}
开发者ID:fatelord,项目名称:chgk,代码行数:7,代码来源:ChGKPresenter.cs

示例2: CreateViewOfType

 protected override IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request)
 {
     var storyboardName = UserInterfaceIsPhone ? "iPhone" : "iPad";
     var storyboard = UIStoryboard.FromName(storyboardName, null);
     return (IMvxTouchView)storyboard
         .InstantiateViewController(viewType.Name);
 }
开发者ID:SaberZA,项目名称:KcMvvm,代码行数:7,代码来源:KcContainer.cs

示例3: Show

 public override sealed void Show(MvxViewModelRequest request)
 {
     if (_fragmentHostRegistrationSettings.IsTypeRegisteredAsFragment(request.ViewModelType))
         ShowFragment(request);
     else
         ShowActivity(request);
 }
开发者ID:cyrilcathala,项目名称:MvvmCross-AndroidSupport,代码行数:7,代码来源:MvxFragmentsPresenter.cs

示例4: Handle

        public static bool Handle(string path)
        {
            var viewDispatcher = Mvx.Resolve<Cirrious.MvvmCross.Views.IMvxViewDispatcher>();
            var appService = Mvx.Resolve<IApplicationService>();
            if (!path.EndsWith("/", StringComparison.Ordinal))
                path += "/";

            foreach (var route in Routes)
            {
                var regex = new Regex(route.Path, RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase);
                var match = regex.Match(path);
                var groups = regex.GetGroupNames().Skip(1);

                if (match.Success)
                {
                    var rec = new MvxViewModelRequest();
                    rec.ViewModelType = route.ViewModelType;
                    rec.ParameterValues = new Dictionary<string, string>();
                    foreach (var group in groups)
                        rec.ParameterValues.Add(group, match.Groups[group].Value);
                    appService.SetUserActivationAction(() => viewDispatcher.ShowViewModel(rec));
                    return true;
                }
            }

            return false;
        }
开发者ID:royalwang,项目名称:CodeHub,代码行数:27,代码来源:UrlRouterProvider.cs

示例5: Show

        public virtual async void Show(MvxViewModelRequest request)
        {
            if (await TryShowPage(request))
                return;

            Mvx.Error("Skipping request for {0}", request.ViewModelType.Name);
        }
开发者ID:sammyroller,项目名称:Cheesebaron.MvxPlugins,代码行数:7,代码来源:MvxFormsPagePresenter.cs

示例6: Show

 // thats an OVERLOAD!, just in case somebody reads way to fast ;)
 public void Show(MvxViewModelRequest request, bool viewModelShouldHandleError = true)
 {
     // TODO: use an as cast with an null check instead?
     if (ImplementsInterface(request.ViewModelType, typeof(IConditionalViewModel))) {
         // check condition here
         var loader = Mvx.Resolve<IMvxViewModelLoader>();
         var viewModel = loader.LoadViewModel(request, null) as IConditionalViewModel;
         if (viewModel.Precondition(viewModelShouldHandleError) == false) {
             if (viewModelShouldHandleError) {
                 // in this case the ViewModel already handled the error - if it did nothing ( no redirect ) basically just nothing happens
                 return;
             }
             else {
                 // The calle asked us ot inform him if the viewmodel does not allow instantiation to handle the error himself, so throw an Exception
                 throw new ViewNotAllowedException();
             }
         }
         else {
             var view = this.CreateViewControllerFor(request);
             // reuse the viewModel
             view.ViewModel = viewModel;
             Show(view);
         }
     }
     else {
         // no conditions, classiv way
         var view = this.CreateViewControllerFor(request);
         Show(view);
     }
 }
开发者ID:EugenMayer,项目名称:MvvmCrossConditions,代码行数:31,代码来源:ConditionalTouchPresenter.cs

示例7: Test_Round_Trip_Works_For_Normal_ViewModel_Requests

        public void Test_Round_Trip_Works_For_Normal_ViewModel_Requests()
        {
            ClearAll();

            var viewModelNameLookup = new MvxViewModelByNameLookup();
            viewModelNameLookup.AddAll(GetType().Assembly);
            Mvx.RegisterSingleton<IMvxViewModelByNameLookup>(viewModelNameLookup);

            var parameterBundle = new MvxBundle(new Dictionary<string, string> { { "On'e", "1'\\" }, { "Two", "2" } });
            var presentationBundle =
                new MvxBundle(new Dictionary<string, string> { { "Thre\"\'\\e", "3\"\'\\" }, { "Four", null } });
            var request = new MvxViewModelRequest<Test1ViewModel>(parameterBundle, presentationBundle,
                                                                  new MvxRequestedBy(
                                                                      MvxRequestedByType.AutomatedService, "HelloWorld"));

            var serializer = new MvxViewModelRequestCustomTextSerializer();
            var output = serializer.SerializeObject(request);

            var deserializer = new MvxViewModelRequestCustomTextSerializer();
            var deserialized = deserializer.DeserializeObject<MvxViewModelRequest>(output);

            Assert.AreEqual(typeof(Test1ViewModel), deserialized.ViewModelType);
            Assert.AreEqual(MvxRequestedByType.AutomatedService, deserialized.RequestedBy.Type);
            Assert.AreEqual("HelloWorld", deserialized.RequestedBy.AdditionalInfo);
            Assert.AreEqual(2, deserialized.PresentationValues.Count);
            Assert.AreEqual(2, deserialized.ParameterValues.Count);
            Assert.AreEqual("1'\\", deserialized.ParameterValues["On'e"]);
            Assert.AreEqual("2", deserialized.ParameterValues["Two"]);
            Assert.AreEqual("3\"\'\\", deserialized.PresentationValues["Thre\"\'\\e"]);
            Assert.AreEqual(null, deserialized.PresentationValues["Four"]);
        }
开发者ID:talisqualis,项目名称:MvvmCross-Build,代码行数:31,代码来源:MvxStringDictionaryTextSerializerTest.cs

示例8: Show

        public override void Show(MvxViewModelRequest request)
        {
            // XFViewModel means we need a Forms View
            if (request.ViewModelType.FullName.Contains ("XFViewModel"))
            {
                //get the xamarin.forms page from the ViewModel
                var contentPage = MvxPresenterHelpers.CreatePage (request);

                //MvvmCross call to create the view model with DI etc
                var viewModel = MvxPresenterHelpers.LoadViewModel (request);

                //Assign it to the Forms Binding Content
                contentPage.BindingContext = viewModel;

                //Creating the view controller from the content page
                var viewController = contentPage.CreateViewController ();

                if (this.MasterNavigationController == null)
                {
                    // If it's the first view
                    this.ShowFirstView (viewController);
                }
                else
                {
                    // If it's already in the stack
                    this.MasterNavigationController.PushViewController (viewController, true);
                }

            }
            else
            {
                //Using a normal MvvmCross View
                base.Show (request);
            }
        }
开发者ID:RasmusTG,项目名称:MvvmCrossNavigationDemo,代码行数:35,代码来源:MvxFormsTouchPagePresenter.cs

示例9: TryShowPage

        private async Task<bool> TryShowPage(MvxViewModelRequest request)
        {
            var page = MvxPresenterHelpers.CreatePage(request);
            if (page == null)
                return false;

            var viewModel = MvxPresenterHelpers.LoadViewModel(request);

            var mainPage = _mvxFormsApp.MainPage as NavigationPage;
            page.BindingContext = viewModel;

            if (mainPage == null)
            {
                _mvxFormsApp.MainPage = new NavigationPage(page);
                mainPage = _mvxFormsApp.MainPage as NavigationPage;
                CustomPlatformInitialization(mainPage);
            }
            else
            {
                try
                {
                    await mainPage.PushAsync(page);
                }
                catch (Exception e)
                {
                    Mvx.Error("Exception pushing {0}: {1}\n{2}", page.GetType(), e.Message, e.StackTrace);
                }
            }

            return true;
        }
开发者ID:sammyroller,项目名称:Cheesebaron.MvxPlugins,代码行数:31,代码来源:MvxFormsPagePresenter.cs

示例10: CreateViewOfType

		protected  override IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request)
		{
			// If View is "SampleViewController", then Storyboard should be "SampleViewController.storyboard"
			// If we can't find storyboard, then proceed to load XIB..
			//
			// NOTE: You must have this ctor defined for Storyboard: 
			//
			//   public YourViewController (IntPtr handle) : base (handle)
			//
            // As indicated here: http://developer.xamarin.com/guides/ios/user_interface/introduction_to_storyboards/
            //

		    IMvxTouchView viewController = null;

			if (NSBundle.MainBundle.PathForResource (viewType.Name, "storyboardc") != null) {
				// If storyboard exists for this view, load it.
				System.Console.WriteLine ("Creating view from Storyboard {0}.storyboard", viewType.Name);
				var storyboard = UIStoryboard.FromName(viewType.Name, null);
				viewController = (IMvxTouchView)storyboard.InstantiateInitialViewController();
			}
			else {
				System.Console.WriteLine ("Storyboard {0}.storyboard does not exist: creating view of type instead", viewType.Name);
				viewController = (IMvxTouchView)base.CreateViewOfType(viewType, request);
			}

			if(viewController == null) {
				System.Console.WriteLine ("Can't create view for type:" + viewType.Name);
				throw new Exception ("Can't create view for type:" + viewType.Name);
			}									
			return viewController;
		}
开发者ID:kashifshaikh,项目名称:PropertyTracker,代码行数:31,代码来源:AppContainer.cs

示例11: Test_NormalViewModel

        public void Test_NormalViewModel()
        {
            ClearAll();

            IMvxViewModel outViewModel = new Test2ViewModel();

            var mockLocator = new Mock<IMvxViewModelLocator>();
            mockLocator.Setup(
                m => m.Load(It.IsAny<Type>(), It.IsAny<IMvxBundle>(), It.IsAny<IMvxBundle>()))
                       .Returns(() => outViewModel);

            var mockCollection = new Moq.Mock<IMvxViewModelLocatorCollection>();
            mockCollection.Setup(m => m.FindViewModelLocator(It.IsAny<MvxViewModelRequest>()))
                          .Returns(() => mockLocator.Object);

            Ioc.RegisterSingleton(mockCollection.Object);

            var parameters = new Dictionary<string, string> { { "foo", "bar" } };
            var request = new MvxViewModelRequest<Test2ViewModel>(new MvxBundle(parameters), null,
                                                                  MvxRequestedBy.UserAction);
            var state = new MvxBundle();
            var loader = new MvxViewModelLoader();
            var viewModel = loader.LoadViewModel(request, state);

            Assert.AreSame(outViewModel, viewModel);
            Assert.AreEqual(MvxRequestedBy.UserAction, viewModel.RequestedBy);
        }
开发者ID:talisqualis,项目名称:MvvmCross-Build,代码行数:27,代码来源:MvxViewModelLoaderTest.cs

示例12: Show

		public override void Show(MvxViewModelRequest request)
		{
            if (TryShowPage(request))
				return;

			Mvx.Error("Skipping request for {0}", request.ViewModelType.Name);
		}
开发者ID:JacobAtchley,项目名称:MyVote,代码行数:7,代码来源:MvxPagePresenter.cs

示例13: CreateView

        public virtual IMvxUnityView CreateView(MvxViewModelRequest request)
        {
            try
            {
                CurrentRequest = request;

                IMvxUnityView view;
                //var viewType = GetViewType(request.ViewModelType);
                //if (viewType == null)
                //    throw new MvxException("View Type not found for " + request.ViewModelType);

                var customAttribute = (MvxViewAttribute)request.ViewModelType.GetCustomAttributes(typeof(MvxViewAttribute), false).FirstOrDefault();

                if (customAttribute != null)
                {
                    string viewUrl = customAttribute.Url;

                    GameObject prefab = (GameObject)UnityEngine.Resources.Load(viewUrl);

                    Camera uiCamera = NGUITools.FindCameraForLayer(prefab.layer);

                    Vector3 newPosition;
                    if (prefab.layer == LayerMask.NameToLayer("UI"))
                    {
                        newPosition = new Vector3(0, 0, uiCamera.farClipPlane + 100f);
                    }
                    else
                    {
                        newPosition = Vector3.zero;
                    }

                    GameObject go = GameObject.Instantiate(prefab, newPosition, Quaternion.identity) as GameObject;

                    PreventCameraSwapOnUIAnchor(go);

                    view = go.GetComponent(typeof(IMvxUnityView)) as IMvxUnityView;
                }
                else
                {
                    /*
                    GameObject go = new GameObject();
                    go.name = request.ViewModelType.Name + "(Clone)";
                    go = go.AddComponent(viewType).gameObject;
                    view = go.GetComponent(typeof(IMvxUnityView)) as IMvxUnityView;
                    */
                    throw new Exception("Unable to find MvxViewAttribute on ViewModel: " + request.ViewModelType.Name);
                }

                if (view == null)
                    throw new MvxException("View not loaded for " + request.ViewModelType);

                view.Request = request;
                return view;
            }
            finally
            {
                CurrentRequest = null;
            }
        }
开发者ID:JordanMarr,项目名称:mvx-unity-ngui,代码行数:59,代码来源:MvxUnityGenericViewsContainer.cs

示例14: ShowViewModel

 // thats an OVERLOAD!, just in case somebody reads way to fast ;)
 public bool ShowViewModel(MvxViewModelRequest request, bool viewModelShouldHandleError = true)
 {
     Action action = () => {
         MvxTrace.TaggedTrace("TouchNavigation", "Navigate requested");
         _presenter.Show(request);
     };
     return RequestMainThreadAction(action);
 }
开发者ID:EugenMayer,项目名称:MvvmCrossConditions,代码行数:9,代码来源:ConditionalTouchDispatcher.cs

示例15: CreateViewOfType

 protected override IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request)
 {
     // Get storyboard using the View name that is passed. This will only work if the Storyboard ID is set on the .storyboard file
     // If we move to unified storyboards this will not be necessary
     var sb = UIStoryboard.FromName(string.Format("{0}_{1}", viewType.Name, UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone ? "iPhone" : "iPad"), NSBundle.MainBundle);
     var vc = sb.InstantiateViewController(viewType.Name);
     return vc as IMvxTouchView;
 }
开发者ID:drewdz,项目名称:BarcodeScanner,代码行数:8,代码来源:TouchViewsContainer.cs


注:本文中的Cirrious.MvvmCross.ViewModels.MvxViewModelRequest类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。