我正在尝试使用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
答案 0 :(得分:1)
确保插件已在IoC容器中注册,并安装在平台项目和核心项目中。
这通常可以通过插件引导类来完成。在平台项目中安装MvvmCross.Plugin.Color
时通常会包括哪个。但是,如果您通过project.json
使用Nuget,则不会自动包含其他引导类。
创建Android项目根目录的文件夹Bootstrap
和ColorPluginBootstrap.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;
}
}