我有一个ListView项目,其中包含来自http GET请求的数据和图像。除了图片外,我可以在ListView中显示所有数据。为了获得图像,我必须做一个单独的http GET请求。我可以用此代码显示图像:WP 8.1从http请求绑定图像
private async void DisplayPicture()
{
var ims = new InMemoryRandomAccessStream();
var dataWriter = new DataWriter(ims);
dataWriter.WriteBytes(App.answer.picture);
await dataWriter.StoreAsync();
ims.Seek(0);
BitmapImage bitmap = new BitmapImage();
bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bitmap.SetSource(ims);
}
但是,如果我想在具有绑定的ListView中使用,这不起作用。 这里是我试过的代码:
public class BinaryToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value != null && value is byte[])
{
var bytes = value as byte[];
var ims = new InMemoryRandomAccessStream();
var dataWriter = new DataWriter(ims);
dataWriter.WriteBytes(bytes);
//await dataWriter.StoreAsync();
ims.Seek(0);
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(ims);
//var ims = new MemoryStream(bytes);
//var image = new BitmapImage();
//image.SetSource(stream);
//stream.Close();
return bitmap;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
的主要问题是,我得到了来自服务器的byte [](字节阵列)的图像,只有上面的代码可以在WP8.1显示。所以我必须使用dataWriter.StoreAsync()
方法,但如果我使用它,我必须使用async
,它必须是无效的。但由于绑定,无效返回值对我来说并不好。
您可以看到我取消注释的原始代码,但我无法使用它,因为image.SetSource()
的输入值必须是RandomAccessStream。所以我不知道如何解决这个问题。
你只是从网上下载图像文件?或者是来自web服务的字节流,有点独特? – 2014-11-24 02:15:50
这是一个用户头像,我可以通过以下URL访问:https://myapi.mywebpage.com/Image/[email protected]所以它来自web服务,每个ListView项目都包含一个独特的图片。下载图片可能需要较长时间,但我会尽力在稍后解决。 – Speederer 2014-11-24 07:18:53
jpg? PNG? GIF? Base64编码?其他? – 2014-11-24 07:41:20