我使用的是Xamarin Forms和Xamarin Android。
我已经使用此代码读取一些文件(存储在Android手机中)
public ImageSource Photo { get; set; }
public void LoadPhoto()
{
var t = Android.Net.Uri.Parse("URI_OF_THE_PHOTO");
var otherStream = Android.App.Application.Context.ContentResolver.OpenInputStream(t);
Photo = Xamarin.Forms.ImageSource.FromStream(() => otherStream);
}
然后,在我的XAML页面中,在ListView的ViewCell中我有这个Image控件:
<Image Source="{Binding Photo}"></Image>
Eveything工作正常,图像(大约50张)正确加载并显示在ListView内。
但是当我滚动ListView并且图像离开屏幕时,当我向后滚动它们时,它们就会空了!图像突然消失......消失!!!
我发现了几个与此类似的StackOverflow案例,但我无法使用这些解决方案,它们似乎不适用于我的案例。
请帮助,我已经遇到了这个问题!
答案 0 :(得分:0)
您可以阅读此link。 FFImageLoading
将解决您的问题。
答案 1 :(得分:0)
在xamarin格式3.5..i中使用可绑定的堆栈布局。.解决了相同的问题。.
答案 2 :(得分:0)
我有类似的问题,在Google待了一段时间后,问题解决了。(也许这个答案为时已晚)
public ImageSource ByteToImageSource(byte[] byteArrayIn)
{
//this way, image in ListView will disapear on scroll
//var stream = new MemoryStream(byteArrayIn);
//var retSource = ImageSource.FromStream(() => stream);
// this way is fine
var retSource = ImageSource.FromStream(() => new MemoryStream(byteArrayIn));
return retSource;
}
所以我认为在您的情况下,您可以这样做:
Photo = Xamarin.Forms.ImageSource.FromStream(() => Android.App.Application.Context.ContentResolver.OpenInputStream(t));