Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uiimageview 如何在MvvmCross中将imageSource绑定到ImageView_Uiimageview_Xamarin_Touch_Converter_Mvvmcross - Fatal编程技术网

Uiimageview 如何在MvvmCross中将imageSource绑定到ImageView

Uiimageview 如何在MvvmCross中将imageSource绑定到ImageView,uiimageview,xamarin,touch,converter,mvvmcross,Uiimageview,Xamarin,Touch,Converter,Mvvmcross,我无法将带有转换器的源绑定到Touch项目中的imageview。我在安卓系统中找到了它,以及如何实现它 public class TypeToSourceConverter : MvxValueConverter<int, string> { protected override string Convert (int value, Type targetType, object parameter, System.Globalization.CultureInfo cul

我无法将带有转换器的源绑定到Touch项目中的imageview。我在安卓系统中找到了它,以及如何实现它

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";
    }
}
在我的触摸表视图单元中,我有:

        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();
        }
        
所以,很可能是因为这个弱靶点,它跳过了其他细胞的束缚。。。我正在寻找答案,但还没有找到。实际上找到了这个,但不确定它是否能解决我的问题


谁能帮帮我吗

解决方案正是斯图尔特在这里提出的:


尝试将您的
MvxImageViewLoader
设置为单元格的成员变量,否则它将超出范围并被垃圾收集


这里也是MVVM交叉教程的一部分,演示者在进行实时编码时遇到了相同的问题,并以相同的原因进行了解释:

尝试将您的
MvxImageViewLoader
作为单元格的成员变量-否则它将超出范围并以其他方式进行垃圾回收,您还可以编写一个值转换器,使用
UIImage自己加载图像。FromFile
参数是一个好的解决方案吗,斯图尔特?嗯,你有没有一个例子来说明如何做一个值转换器,它自己加载的图像也适用于其他平台,这对我来说似乎是最好的解决方案。如果它能工作,并且你对代码感到满意,这是一个非常好的解决方案。非常确定,我很高兴,它也能工作,但只是担心它无法扩展,但还好,现在让我们继续使用此解决方案=)
        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();
        }
        
2014-04-18 14:40:45.902 MyProjectTouch[23081:70b] MvxBind:Warning: 30.59 Weak Target is null in MvxWithEventPropertyInfoTargetBinding - skipping set