C# 向MvvmCross提供其他视图程序集
在Xamarin Forms应用程序中,我想提供另一个视图程序集(而不是默认的),MvvmCross可以在其中查找视图 在执行以下操作之后,在UWP的设置类中,IC# 向MvvmCross提供其他视图程序集,c#,xamarin.forms,mvvmcross,C#,Xamarin.forms,Mvvmcross,在Xamarin Forms应用程序中,我想提供另一个视图程序集(而不是默认的),MvvmCross可以在其中查找视图 在执行以下操作之后,在UWP的设置类中,I覆盖GetViewAssembly()以添加其他程序集: protected override IEnumerable<Assembly> GetViewAssemblies() { var viewAssemblies = new List<Assembly>();
覆盖GetViewAssembly()
以添加其他程序集:
protected override IEnumerable<Assembly> GetViewAssemblies()
{
var viewAssemblies = new List<Assembly>();
viewAssemblies.AddRange(base.GetViewAssemblies());
viewAssemblies.Add(typeof(MovementPage).GetTypeInfo().Assembly);
return viewAssemblies;
}
当此页面出现在默认程序集中(包含ViewModels的程序集,App.cs)时,将显示该页面
这里可以做些什么?重写
InitializeViewLookup()
可以工作,但很繁琐:(
protected override void InitializeViewLookup()
{
var viewsLookup=新字典
{
[typeof(MovementViewModel)]=typeof(MovementPage)
};
var container=Mvx.Resolve();
container.AddAll(viewsLookup);
}
我这样做是为了将视图和业务逻辑放在单独的程序集中。
mvx:Diagnostic: 10.46 Setup: Secondary end
mvx:Diagnostic: 10.51 Showing ViewModel MovementViewModel
Exception thrown: 'System.Collections.Generic.KeyNotFoundException' in MvvmCross.Core.dll
mvx:Diagnostic: 10.82 Page not found for MovementPage
mvx:Error: 10.84 Skipping request for MovementViewModel
Exception thrown: 'System.ArgumentNullException' in Xamarin.Forms.Platform.UAP.dll
Exception thrown: 'System.ArgumentNullException' in MovementTimer.UWP.exe
protected override void InitializeViewLookup()
{
var viewsLookup = new Dictionary<Type, Type>
{
[typeof(MovementViewModel)] = typeof(MovementPage)
};
var container = Mvx.Resolve<IMvxViewsContainer>();
container.AddAll(viewsLookup);
}