如何在Silverlight中刷新图像?

时间:2012-07-10 18:51:41

标签: silverlight cache-control

我尝试动态加载图片。 XAML是:

加载图片的代码是:(由代码后面的按钮点击事件触发)

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

网址指向图片的网站。假设我有像以下网址的图片:

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

然后我运行应用程序,单击按钮,我可以获取图像并在UI中显示它没有问题。

然后我使用相同的名称覆盖服务器上的图像文件,然后再次单击该按钮,图像不会刷新。我需要为新的图像显示重新加载整个SL应用程序。 如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

解决该问题的最简单方法是在图片网址的末尾添加一个随机数。

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(...)的新随机值,该值将指示" new"图像请求,并将绕过可能正在进行的任何缓存。

答案 1 :(得分:0)