无法解析类型:IMvxPictureChooserTask>

时间:2014-09-14 04:59:21

标签: image xamarin mvvmcross xamarin.forms

我正在使用Xamarin Forms,并且我尝试使用此代码从图库中选择图片:

var task = Mvx.Resolve <IMvxPictureChooserTask>();
task.ChoosePictureFromLibrary(400, 95, OnPicture, () => { });

但是我收到了这个错误:

Could not resolve type:global::Cirrious.CrossCore.Mvx.Resolve<global::Cirrious.MvvmCross.Plugins.PictureChooser.IMvxPictureChooserTask>

有什么想法吗?

编辑:嗯,最后我不得不改变我的项目架构并从PCL中获取视图。虽然创建了iOS视图,但这几乎解决了所有问题。

1 个答案:

答案 0 :(得分:1)

不确定您是如何将它添加到项目中的,但通常在通过NuGet添加时,它会为您解决此问题。但是,如果您通过添加自己编译的源或二进制文件来管理自己的引用,则可以执行此操作:

在你的:

  • 核心项目
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser
  • 触摸项目
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser.Touch
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser
  • Droid项目
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser.Droid
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser
  • WindowsPhone项目
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser.WindowsPhone
    • 添加Cirrious.MvvmCross.Plugins.PictureChooser

等等......我希望你现在得到这个模式。

但是,这还不够,只需添加引用即可。您还需要告诉MvvmCross您要使用此插件。所以你有几个选择。

  1. 使用包含以下内容的引导程序文件添加Bootstrap文件夹:

    public class DownloadCachePluginBootstrap
        : MvxPluginBootstrapAction<Cirrious.MvvmCross.Plugins.PictureChooser.PluginLoader>
    {
    }
    
  2. 在Setup.cs文件中为每个平台覆盖LoadPlugins

    public override void LoadPlugins(IMvxPluginManager pluginManager)
    {
        pluginManager.EnsurePluginLoaded<Cirrious.MvvmCross.Plugins.PictureChooser.PluginLoader>();
        base.LoadPlugins(pluginManager);
    }