2011-03-28 139 views
3

在我的应用程序中动态加载图像时遇到大问题。当我启动应用程序时,占位符图像源是空的。当我点击一个按钮时,图像被创建并加载为占位符源。当我再次点击一个新的图像被创建,但旧图像显示。该图像的创建完美。我的磁盘上的文件是他们应该的文件。WPF刷新图像(缓存问题)

以下函数设置图像占位符的来源。

public void setImage(string path) 
    { 
     BitmapImage img = new BitmapImage(); 
     img.BeginInit(); 
     img.UriSource = new Uri(path, UriKind.Relative); 
     img.EndInit(); 

     //Set Refreshing Options 
     img.CacheOption = BitmapCacheOption.None; 
     img.CreateOptions = BitmapCreateOptions.IgnoreImageCache; 


     placeholder.Source = img; 
    } 

BitmapCacheOption和BitmapCreateOptions两个选项都不会改变任何东西。

你能帮助我吗?

回答

0

出于性能原因,WPF在内部缓存图像。如果你同时使用相同的Uri,并且期望每次都得到不同的图像(例如,如果Uri位于一个返回随机图像的Web服务器上),那么这个缓存对你来说就是一个问题。

您可能必须创建WebRequest并手动下载图像,而不是依赖Image类为您完成。

另一种选择是改变Uri的方式,使其独特。例如,你可以附加一个GUID作为查询字符串。

+0

此应用程序仅在本地运行。 – Stillmatic1985 2011-03-29 18:01:49

+0

然后我不明白你看到了什么问题。你是否多次指定相同的Uri并期待不同的图像?你是否指定不同的Uris并获得相同的图像? – 2011-03-29 22:39:52