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;
}
我有一个使用 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;
}