C# Xamarin:使用MvvmCross从其他解决方案导入一个页面

C# Xamarin:使用MvvmCross从其他解决方案导入一个页面,c#,xamarin,mvvmcross,C#,Xamarin,Mvvmcross,我有一个使用MvvmCross的Xamarin应用程序,我想将一个页面排除到另一个解决方案中。 那有可能吗? 我将显示以下错误: System.Collections.Generic.KeyNotFoundException: 'Could not find view for TestApp.ValidationViewModel2' 细节: 我有一个主应用程序,我想导航到外部页面ValidationViewModel2 为了访问新解决方案中的页面,我添加了对“TestApp”程序集的引用。

我有一个使用MvvmCross的Xamarin应用程序,我想将一个页面排除到另一个解决方案中。 那有可能吗? 我将显示以下错误:

System.Collections.Generic.KeyNotFoundException: 'Could not find view for TestApp.ValidationViewModel2'
细节: 我有一个主应用程序,我想导航到外部页面ValidationViewModel2

为了访问新解决方案中的页面,我添加了对“TestApp”程序集的引用。 “TestApp”解决方案包含一个包含ValidationPage2.xaml和ValidationViewModel2.cs文件的C项目。两个文件相互找到,项目成功构建。 我还可以从主页调试到“ValidationViewModel2”构造函数中;错误随后发生。 我只使用安卓系统。My ValidationViewModel2.cs还引用了主应用程序。
感谢您的帮助

如果您稍微研究一下MvvmCross的文档,您会发现

此文档说明,如果要将ViewModels或视图放置在不同于MvvmCross期望的默认组件中,则需要告知MvvmCross

这可以通过覆盖每个平台的Setup.cs文件来实现

有关意见:

protected override Assembly[] GetViewAssemblies()
{
    var list = new List<Assembly>(base.GetViewAssemblies());
    list.Add(typeof(SomeTypeFromAdditionalViewAssembly).Assembly);
    return list;
}
对于ViewModels:

protected override Assembly[] GetViewModelAssemblies()
{
    var list = new List<Assembly>(base.GetViewModelAssemblies());
    list.Add(typeof(SomeTypeFromAdditionalViewModelAssembly).Assembly);
    return list;
}

您使用的是.NET 2.0标准项目吗?是的,两个项目都使用.NET 2.0标准。MvvmCross文档不正确:该方法必须是公共的,返回类型必须是IEnumerable。它对我有效,但我只能重写两个方法中的一个。重写这两个方法会导致异常->相同的程序集dll导入了两次。
protected override Assembly[] GetViewModelAssemblies()
{
    var list = new List<Assembly>(base.GetViewModelAssemblies());
    list.Add(typeof(SomeTypeFromAdditionalViewModelAssembly).Assembly);
    return list;
}