【发布时间】:2015-11-06 18:43:58
【问题描述】:
我一直在重构我的工作解决方案,将多个程序集用作可重用模块。它有以下程序集
App.Framework - 解决方案各个方面的通用项目, App.Core - mvvmcross 核心, App.StartupModule - 应用程序不同部分的模块的一部分,用于其他项目的可重用性,它包含自己的存储库、服务和视图模型。 App.Windows, App.Android
我已经设法解决了 viewodellocator 并从模块中获取类型,并使用以下内容启动应用程序,其中 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.覆盖映射更好吗?以及如何去做呢? 3. 还有什么其他建议可以解决这个问题? 4. 从我所见,这将需要在每个平台上实现某些东西,我猜没有通用的方法来处理所有平台?
提前致谢
【问题讨论】: