1

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

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

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

URL 指向图像的站点。假设我有如下 URL 的图像:

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

然后我运行应用程序,单击按钮,我可以毫无问题地获取图像并将其显示在 UI 中。

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

4

2 回答 2

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

于 2015-01-23T17:50:18.517 回答
0

BitmapImage.CacheOption您可以使用以下属性指定缓存行为:http: //msdn.microsoft.com/fr-fr/library/system.windows.media.imaging.bitmapimage.cacheoption.aspx

OnLoad您可以先尝试:http None: //msdn.microsoft.com/fr-fr/library/system.windows.media.imaging.bitmapcacheoption.aspx

于 2012-07-12T10:10:53.847 回答