Xamarin.ios 在多平台MvvmCross上共享颜色转换器(MvvmCross v3)

Xamarin.ios 在多平台MvvmCross上共享颜色转换器(MvvmCross v3),xamarin.ios,xamarin.android,mvvmcross,Xamarin.ios,Xamarin.android,Mvvmcross,本问答中回答的问题是,当我们有一个带有枚举属性的ViewModel时,我们如何使用mvvmcross在UI项目上显示颜色,而不需要颜色属性,也不需要每个平台都有ValueConverter。假设您有这样的视图模型 公共枚举MyEnum { 价值1, 价值2 } 公共类MyViewModel:MvxViewModel { public MyEnum MyEnumProp{get…set…} } 假设您希望为Value1显示蓝色,为Value2显示黑色,您可以在核心项目上实现此转换器 公共类MyE

本问答中回答的问题是,当我们有一个带有枚举属性的ViewModel时,我们如何使用mvvmcross在UI项目上显示颜色,而不需要颜色属性,也不需要每个平台都有ValueConverter。

假设您有这样的视图模型

公共枚举MyEnum
{
价值1,
价值2
}
公共类MyViewModel:MvxViewModel
{
public MyEnum MyEnumProp{get…set…}
}
假设您希望为Value1显示蓝色,为Value2显示黑色,您可以在核心项目上实现此转换器

公共类MyEnumToColorConverter:MvxValueConverter
{
受保护的覆盖对象转换(乘数值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
MvxColor MvxColor=null;
开关(值){
案例MyEnum.Value1:
mvxColor=新的mvxColor(240255255);
打破
案例MyEnum.Value2:
mvxColor=新的mvxColor(0,0,0);
打破
违约:
mvxColor=新的mvxColor(0,0,0);
打破
}
var nativeColorConv=Mvx.Resolve();
返回nativeColorConv.ToNative(mvxColor);
}
}
诀窍是调用
Mvx.Resolve()
。在你的UI项目上,如果你加载了正确的颜色插件,你将自动获得适合你平台的正确颜色实现

请记住将这一行添加到Setup.cs(如果您添加了颜色插件Nuget软件包,该软件包会自动将其添加到引导文件夹中,则不需要)

cirrial.MvvmCross.Plugins.Color.PluginLoader.Instance.EnsureLoaded();