Как узнать, что загрузка изображения завершена в wp7? - PullRequest
1 голос
/ 23 марта 2012

Заранее спасибо ..

Я загружаю некоторые изображения с сервера в мое приложение wp7.Для этого я использую следующий код:

ObservableCollection<BitmapImage> biList;
int currentItem;

private void DownloadImages(string[] imageUriList)
{
   biList = new ObservableCollection<BitmapImage>();
   BitmapImage bi;

   for (int i = 0; i < imageUriList.Length; i++)
   {
      bi = new BitmapImage();
      biList.Add(bi);
      bi.UriSource = new Uri(imageUriList[i], UriKind.Absolute);
      biList[i] = bi;
   }
}

После этого я показываю эти изображения одно за другим в <Image /> элементе управления в моем приложении Windows Phone.

<Image x:Name="imgImage" />

Я использую следующий код для отображения изображений

private void ShowImages()
{
   imgImage.Source = biList[0];
   currentItem = 1;
}

И изображения меняются при нажатии кнопок «следующий» или «предыдущий».

private void btnNext_Click(object sender, RoutedEventArgs e)
{
   if(currentItem < biList.Count)
   {
      imgImage.Source = biList[currentItem];
      currentItem += 1;
   }
}

private void btnPrevious_Click(object sender, RoutedEventArgs e)
{
   if(currentItem > 1)
   {
      imgImage.Source = biList[currentItem-2];
      currentItem -= 1;
   }
}

Когда я пытаюсь показать эти изображения, через некоторое время отображаются некоторые изображения.

Как я могу убедиться, что изображения полностью загружены?

1 Ответ

3 голосов
/ 23 марта 2012

Вы можете использовать WebClient для загрузки изображения, и после его успешной загрузки вы можете добавить код в обработчик событий, как показано ниже:

private void GetImage()
{
    WebClient client = new WebClient();
    client.OpenReadAsync(new Uri("http://website.com/image.jpg"));
    client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    //Image has been downloaded
    //Do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...