У меня есть элемент 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();
}
}
Основная проблема заключается в том, что я получаю изображение в байт [] (ByteArray) с сервера, и только выше код может отображать его на WP8.1. Поэтому я должен использовать метод dataWriter.StoreAsync()
, но если я его использую, я должен использовать async
, который должен быть недействительным. Но значение возврата void не подходит для меня из-за привязки.
Вы можете видеть исходный код, что я раскололся, но я не могу его использовать, потому что входное значение для image.SetSource()
должно быть RandomAccessStream. Поэтому я не знаю, как я могу решить эту проблему.
Вы только что загрузили файл изображения из Интернета? Или что байт поток что-то из webservice и своего рода уникальным? –
Это аватар пользователя, с которым я могу связаться с этим URL-адресом: https://myapi.mywebpage.com/Image/[email protected] Итак, это происходит из веб-сервиса, и каждый элемент ListView содержит уникальную картинку , Загрузка изображений может занять больше времени, но я попытаюсь решить ее позже. – Speederer
jpg? PNG? GIF? Base64 закодирован? Другие? –