无法解析类型MvvmCross.Platform.UI.IMvxNativeColor

时间:2017-04-27 17:33:45

标签: mvvmcross

我正在尝试使用MvvmCross.Plugin.Color库,以便我可以使用转换器来处理颜色。这是我的转换器:

public class MyColorValueConverter : MvxColorValueConverter<bool>
{
    protected override MvxColor Convert(bool value, object parameter, CultureInfo culture)
    {
        return value ? new MvxColor(19, 119, 51) : new MvxColor(171, 8, 16);
    }
}

在.xml中:

<MyView
    android:layout_width="match_parent"
    android:layout_height="40dp"
    local:MvxBind="BackgroundColor MyColor(MyBool)" />

但是当我提出MyBool的属性更改时,我收到此消息的异常:

  

MvvmCross.Platform.Exceptions.MvxIoCResolveException:失败   解析类型为MvvmCross.Platform.UI.IMvxNativeColor at   MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve

2 个答案:

答案 0 :(得分:1)

确保插件已在IoC容器中注册,并安装在平台项目和核心项目中。

这通常可以通过插件引导类来完成。在平台项目中安装MvvmCross.Plugin.Color时通常会包括哪个。但是,如果您通过project.json使用Nuget,则不会自动包含其他引导类。

创建Android项目根目录的文件夹BootstrapColorPluginBootstrap.cs

using MvvmCross.Platform.Plugins;

namespace {{Your name space}}.Bootstrap
{
    public class ColorPluginBootstrap
        : MvxPluginBootstrapAction<MvvmCross.Plugins.Color.PluginLoader>
    {
    }
}

答案 1 :(得分:0)

您也可以将其添加到Android项目的MvxAndroidSetup中:

protected override IEnumerable<Assembly> ValueConverterAssemblies
{
    get
    {
        var toReturn = base.ValueConverterAssemblies.ToList();
        toReturn.Add(typeof(MvxNativeColorValueConverter).Assembly);
        return toReturn;
    }
}