2012-03-23 95 views
1

在此先感谢..如何知道在wp7中完成的下载图像?

我正在从服务器下载一些图像到我的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; 
    } 
} 

之后,我展示这些图像一个接一个在我的Windows Phone应用程序的<Image />控制。

<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; 
    } 
} 

当我试图显示这些图片,有些图片在一段时间后显示。

如何确保图像完全下载?

+0

我认为会有一些'DownloadStringCompleted'事件。 – 2012-03-23 10:10:27

回答

3

您可以使用Web客户端下载图像,一旦它已经成功下载,你可以到下面的事件处理程序添加代码:

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 
} 
相关问题