我一直在重構我的工作解決方案,使用多個程序集作爲可重用模塊。它具有以下組件覆蓋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