我正在尝试使用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.mvxiocresolvesception:失败 解析类型mvvmcross.platform.ui.imvxnativecolor at mvvmcross.platform.ioc.mvxsimpleioccontainer.strove
确保插件针对IOC容器注册并安装在平台项目以及您的核心项目中。
通常可以通过插件引导类别完成。在平台项目中安装MvvmCross.Plugin.Color
时,通常包括其中。但是,如果您通过project.json
使用Nuget,则不包括其他引导类别。
创建一个Android项目根和ColorPluginBootstrap.cs
Bootstrap
using MvvmCross.Platform.Plugins;
namespace {{Your name space}}.Bootstrap
{
public class ColorPluginBootstrap
: MvxPluginBootstrapAction<MvvmCross.Plugins.Color.PluginLoader>
{
}
}
您也可以将其添加到Android项目的MvxAndroidSetup
中:
protected override IEnumerable<Assembly> ValueConverterAssemblies
{
get
{
var toReturn = base.ValueConverterAssemblies.ToList();
toReturn.Add(typeof(MvxNativeColorValueConverter).Assembly);
return toReturn;
}
}