我有一個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