我一直在重构我的工作解决方案,使用多个程序集作为可重用模块。它具有以下组件覆盖mvvmcross查看定位器
App.Framework - 整个解决方案的各个方面共同的项目, App.Core - mvvmcross核心, App.StartupModule - 为应用程序的不同部分模块的一部分,在其他项目中可重复使用,它包含自己的回购,服务和视图模型。 App.Windows, App.Android
我已成功地解决了viewodellocator和具有从所述模块的类型assemnly并使用以下来启动应用程序,其中startupView是该特定的默认视图模块。
var method = this.GetType().GetMethod("RegisterAppStart", BindingFlags.FlattenHierarchy)
.MakeGenericMethod(startupView);
method.Invoke(this, null);
所以应用程序运行,一路过关斩将核心,然后到WindowsPhone的应用程序,当它试图找到logonviewmodel它打破了相关的看法。命名空间已经从
App.Core.ViewModels.[VIEWMODELNAME] -> App.StartupModule.ViewModels.[VIEWMODELNAME]
改变这是调试跟踪的部分地方我认为是失败的
mvx:Diagnostic: 84.00 Error seen during navigation request to LogonViewModel - error KeyNotFoundException: Could not find view for App.StartupModule.ViewModels.LogonViewModel
at Cirrious.MvvmCross.Views.MvxViewsContainer.GetViewType(Type viewModelType)
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsViewPresenter.Show(MvxViewModelRequest request)
视图位于命名空间
App.WindowsPhone.Views
,所以我猜我的问题是 1.是否有一种简单的方法告诉viewdispatcher/viewlocator在项目中查看[VIEWMODELNAME]类型的视图 2. is重写映射更好吗?以及如何去做这件事? 3.有什么其他建议要重写以修复此问题? 4.从什么看到这将需要在每个平台上实现一些东西,即时通讯猜测没有通用的方式来处理这个所有平台?
在此先感谢
这就是我认为会发生,但是做出我的更改后,它不能再找到我的UI项目,这是工作正常之前的看法?所以不知道发生了什么然后:/ – Barry
我shuold可能会补充说,我已覆盖导航,并使用此 公共无效导航(类型viewModelType,对象参数) { ShowViewModel(viewModelType,parameters); } – Barry
您是否在与本机iOS,Windows或Android项目不同的程序集中定义了视图? – Stephanvs