我正在尝试使用不同程序集中的视图和视图模型。我已经阅读了答案:https://stackoverflow.com/a/17200358/4550962和https://stackoverflow.com/a/35358504/4550962,但对我来说并不令人满意。
方法GetViewAssemblies()和GetViewModelAssemblies()没有任何效果 - 未加载视图。 InitializeViewLookup()方法按预期工作,但需要手动配对所有视图和视图模型。
对于001XAML,例如:W81:
将代码添加到Setup.cs:
protected override IEnumerable<Assembly> GetViewAssemblies()
{
var list = new List<Assembly>();
list.AddRange(base.GetViewAssemblies());
list.Add(typeof(Example.Pages.FirstPage).GetTypeInfo().Assembly);
return list;
}
protected override IEnumerable<Assembly> GetViewModelAssemblies()
{
var list = new List<Assembly>();
list.AddRange(base.GetViewModelAssemblies());
list.Add(typeof(Example.ViewModels.FirstViewModel).GetTypeInfo().Assembly);
return list;
}
运行 - 效果为ArgumentNullException
:值不能为空。参数名称:newRoot
在Xamarin.Forms.Platform.WinRT.Platform.SetPage(Page newRoot)
在 Xamarin.Forms.Platform.WinRT.WindowsBasePage.LoadApplication(应用 应用程序)在Example.W81.MainPage..ctor()at Example.W81.Example_W81_XamlTypeInfo.XamlTypeInfoProvider.Activate_4_MainPage()at at Example.W81.Example_W81_XamlTypeInfo.XamlUserType.ActivateInstance()
评论代码来自6)并添加:
protected override void InitializeViewLookup()
{
var viewModelLookup = new Dictionary<Type, Type>
{
{typeof(ViewModels.AboutViewModel), typeof(Pages.AboutPage)},
{typeof(ViewModels.FirstViewModel), typeof(Pages.FirstPage)}
};
var container = Mvx.Resolve<IMvxViewsContainer>();
container.AddAll(viewModelLookup);
}
跑步 - 像魅力一样工作