调用 ShowViewModel 时出错
Getting error calling ShowViewModel
编写一个示例应用程序,其中包含项目列表,然后当用户单击某个项目时 - 它使用 ShowViewModel 显示有关该项目的详细信息页面。但是,当调用调用 ShowViewModel 的方法时,它会崩溃并出现以下错误:
“无法使用标记 01000037 解析类型
(来自 typeref,class/assembly MvvmCross.Core.ViewModels.MvxRequestedBy..."
示例应用程序的代码在这里:
https://github.com/gregmercer/FruitsAndVeggies
完整的错误信息在这里:
https://github.com/gregmercer/FruitsAndVeggies/blob/master/error.txt
导致错误的行(未注释时)位于此处:
https://github.com/gregmercer/FruitsAndVeggies/blob/master/FruitsAndVeggies.Core/ViewModels/FruitsViewModel.cs#L58
要传递参数,您需要从通用 MvxViewModel< Parameters>
继承或更新到 MvvmCross 5.0,它改进了对传递对象的支持。
看这个样本作为参考:https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Navigation
问题是您混合了 MvvmCross 版本。
因此,如果您查看 packages.config 的核心:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MvvmCross" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
<package id="MvvmCross.Binding" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
<package id="MvvmCross.Core" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
<package id="MvvmCross.Platform" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
</packages>
这些是版本 4.4.0
那么如果我们查看 Droid 项目:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MvvmCross" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Binding" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Core" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Shared" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.Core.UI" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.Fragment" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.V7.AppCompat" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.V7.RecyclerView" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Platform" version="5.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Annotations" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Compat" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Core.UI" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Core.Utils" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Design" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Fragment" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Media.Compat" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Transition" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Build.Download" version="0.4.3" targetFramework="monoandroid70" />
</packages>
这些是 5.0.2 版本,比 4.4.0 更新。
合并您的包并在所有项目中使用相同的版本。
编写一个示例应用程序,其中包含项目列表,然后当用户单击某个项目时 - 它使用 ShowViewModel 显示有关该项目的详细信息页面。但是,当调用调用 ShowViewModel 的方法时,它会崩溃并出现以下错误: “无法使用标记 01000037 解析类型 (来自 typeref,class/assembly MvvmCross.Core.ViewModels.MvxRequestedBy..."
示例应用程序的代码在这里: https://github.com/gregmercer/FruitsAndVeggies
完整的错误信息在这里: https://github.com/gregmercer/FruitsAndVeggies/blob/master/error.txt
导致错误的行(未注释时)位于此处: https://github.com/gregmercer/FruitsAndVeggies/blob/master/FruitsAndVeggies.Core/ViewModels/FruitsViewModel.cs#L58
要传递参数,您需要从通用 MvxViewModel< Parameters>
继承或更新到 MvvmCross 5.0,它改进了对传递对象的支持。
看这个样本作为参考:https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Navigation
问题是您混合了 MvvmCross 版本。
因此,如果您查看 packages.config 的核心:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MvvmCross" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
<package id="MvvmCross.Binding" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
<package id="MvvmCross.Core" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
<package id="MvvmCross.Platform" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" />
</packages>
这些是版本 4.4.0
那么如果我们查看 Droid 项目:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MvvmCross" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Binding" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Core" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Shared" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.Core.UI" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.Fragment" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.V7.AppCompat" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Droid.Support.V7.RecyclerView" version="5.0.2" targetFramework="monoandroid70" />
<package id="MvvmCross.Platform" version="5.0.2" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Annotations" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Compat" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Core.UI" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Core.Utils" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Design" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Fragment" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Media.Compat" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Transition" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="25.3.1" targetFramework="monoandroid70" />
<package id="Xamarin.Build.Download" version="0.4.3" targetFramework="monoandroid70" />
</packages>
这些是 5.0.2 版本,比 4.4.0 更新。
合并您的包并在所有项目中使用相同的版本。