Xamarin:使用 MvvmCross 从不同的解决方案导入一页

Xamarin: Import one page from a different solution using MvvmCross


我有一个使用 MvvmCross 的 Xamarin 应用程序,我想将一页排除到不同的解决方案。
这可能吗?
我收到以下错误:

System.Collections.Generic.KeyNotFoundException: 'Could not find view for TestApp.ValidationViewModel2'


详情:
我有一个主应用程序,我想在其中导航到外部页面 "ValidationViewModel2".

new MvxAsyncCommand(async() => await NavigationService.Navigate<ValidationViewModel2>())

为了访问新解决方案中的页面,我添加了对 'TestApp' 程序集的引用。
'TestApp' 解决方案包含一个 C# 项目,其中包含一个 "ValidationPage2.xaml" 和一个 "ValidationViewModel2.cs" 文件。两个文件相互找到,项目构建成功。

我还可以从主页调试到 'ValidationViewModel2' 构造函数;错误发生在之后。
我只使用 Android。我的 ValidationViewModel2.cs 也引用了主应用程序。

感谢帮助

如果您稍微研究一下 MvvmCross 的文档,您会发现 documentation about Customizing App and Setup

该文档描述了如果您想将 ViewModel 或 View 放在不同于 MvvmCross 期望的默认程序集中的程序集中,您需要将其告知 MvvmCross。

这可以通过覆盖每个平台的 Setup.cs 文件来完成。

浏览量:

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

对于视图模型:

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