2012-07-10 44 views
1

我嘗試動態加載圖像。該XAML是:如何在Silverlight中獲取圖像刷新?

加載圖像的代碼是:(它是由按鈕單擊事件背後的代碼解僱)

Image myimage = new Image() { Source = new BitmapImage(new Uri(url)) }; 
this.myPlayer.Content = myimage; 

的URL指向該圖像的網站。假設我有圖像與像網址:

"http://mysite/myfolder/my.jpg" 

然後我運行應用程序,點擊按鈕,我可以得到圖像而不會發生問題在UI中顯示。

然後我重寫服務器上的圖像文件具有相同的名稱,然後再次單擊按鈕,圖像不刷新。我需要重新加載整個SL應用程序以用於新圖像顯示。 如何解決這個問題?

回答

1

來解決這個問題最簡單的方法是把一個隨機數在圖像結束URL。

Random random = new Random(); 
int randomValue = random.Next(1000000); // will return value between 0 & 1,000,000 
string base = "http://mysite/myfolder/my.jpg"; 
string url = base + "?unused=" + randomValue; 
//Note url now equals: "http://mysite/myfolder/my.jpg?unused=####" 

Image myimage = new Image() { Source = new BitmapImage(new Uri(url)) }; 
this.myPlayer.Content = myimage; 

這工作,因爲Web服務器會自動忽略?unused=部分添加到圖像名稱。

每次瀏覽此功能時,您應該從random.Next(...)收到一個新的隨機值,它會指示一個「新」圖像請求,並將繞過可能正在進行的任何緩存。