我无法将带转换器的源绑定到Touch项目中的imageview。我找到了here和here如何在Android
中创建它public class TypeToSourceConverter : MvxValueConverter<int, string>
{
protected override string Convert (int value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var assetName = ((AppConstants.Type)value).ToString ().ToLower ();
return "Images/" + assetName + ".png";
}
}
但是我在如何在iOS中使用这个转换器时遇到了麻烦,我刚刚找到了使用ImageURL的示例,我现在正在iOS中启动,所以我有一些愚蠢的问题,如何将图像与此转换器绑定在哪里我应该把图像放在Touch项目中吗?它在Resource / Images / * .png?
在此致谢谢, 加布里埃尔
嗯,我做了什么,试图解决它是: 我在Droid和iOS中作为参数传递了一个数字,所以在转换器中我做了:
protected override string Convert (int value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var assetName = ((AppConstants.Type)value).ToString ().ToLower ();
switch(int)
{
case 0://Droid
return "Images/" + assetName + ".png";
case 1://Touch
return "res:Images/" + assetName + ".png";
default:
return "";
}
在我的触摸表查看单元格中,我有:
var imageViewLoader = new MvxImageViewLoader (() => historicTypeImageView);
Opaque = true;
this.DelayBind(() => {
var set = this.CreateBindingSet<HistoricCell, Historic>();
set.Bind(imageViewLoader).For(i => i.DefaultImagePath).To(historic => historic.UpdateType).WithConversion("HistoricTypeToSource", 2);
set.Apply();
}
现在,问题是:我发现它只适用于第一个单元格,而不是所有单元格,例如,它复制了出现在所有单元格中的第一个imageViews,而不是为每个类型绑定每个单元格的图像...
我在输出中看到,我正在收到:
2014-04-18 14:40:45.902 MyProjectTouch[23081:70b] MvxBind:Warning: 30.59 Weak Target is null in MvxWithEventPropertyInfoTargetBinding - skipping set
可能,正是由于这个弱目标,它正在跳过其他细胞的绑定......我正在寻找答案,但还没有找到。实际上发现了这个this,但不确定它能解决我的问题..
请有人帮助我!
答案 0 :(得分:3)
解决方案正是斯图尔特在这里所建议的:
尝试将
MvxImageViewLoader
成为单元格的成员变量 - 否则它将超出范围并收集垃圾
这也是MVVM Cross教程的一部分,其中演示者在实时编码时遇到同样的问题并解释它的原因相同:https://www.youtube.com/watch?v=iFEE355587k#t=1443