我正在尝试使用MvvmCross的值转换器更改iOS标签的文本颜色。下面的代码一点点(这是核心项目):Xamarin MvvmCross iOS Bool颜色ValueConverter不更改标签文本颜色
public class BoolToColorValueConverter
: MvxValueConverter<bool, object>
{
protected override object Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
MvxColor mvxColor = null;
if(value)
mvxColor = new MvxColor(255, 0, 0);
else
mvxColor = new MvxColor(0, 0, 0);
var nativeColorConv = Mvx.Resolve<IMvxNativeColor>();
return nativeColorConv.ToNative(mvxColor);
}
}
,然后在我的绑定:
this.CreateBinding(LabelName).For(s => s.TextColor).To((MyViewModel vm) => vm.BooleanPropertyThatChangesAtSomePoint).WithConversion("BoolToColor").Apply();
但由于某些原因,当从真到假布尔属性更改,我看到绑定到该属性的其他字段正确更改,但不是标签的文本颜色。
我见过@slodge视频,教程,下载的git示例,但仍无法使其工作。我认为它与转换器没有返回正确的值有关,因为我放置了断点并且转换器已被触发。有任何想法吗?
感谢卢克和感谢编辑。我确实安装了MvxColors插件。我不太赞同LinkerPleaseInclude方法。我无法在我的项目中找到该类,因此我认为它必须手动添加。我遵循使用MvxColorValueConverter的方法,但是当应用程序启动时出现错误。我会通过你的建议,并让你知道它是如何去。 – Ph0b0x
实际上使用MvxColor方法取得了诀窍。我错过了IOS项目上的Mvx Color Plugin。我在Core项目中拥有它,但不是在IOS项目中。非常感谢卢克。 – Ph0b0x
使用Mvx插件时的一般经验法则是确保将插件添加到Core和Platform项目中。插件通常具有可移植的界面和特定于平台的实现,因此添加两者可确保其正常工作。 – Kiliman