2012-03-23 224 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 
} 
相關問題