WPF使用URL源缓存图像

时间:2016-01-18 08:17:43

标签: c# wpf xaml caching mvvm

我正在尝试在我的MVVM WPF应用程序中显示带有URL源的图像。我使用的Xaml是:

<ContentControl>
    <Image Margin="5" Height="190" Source="{Binding CampaignMainImage}"/>
</ContentControl>

在我的视图模型中,我尝试将CampaignMainImagestringBitmapImage绑定在一起。在这两种情况下,图像源都来自Web URL。这两个都有效,我的应用程序成功显示了图像。

但是,在同一个应用程序中,我需要允许用户上传新图像。我这样做文件选择和ftp上传。我成功上传,并看到在PropertyChanged事件被引发的地方遇到断点。

问题是,新图像的名称必须与旧图像相同,而WPF似乎正在缓存图像。即使我在应用程序中关闭该窗口并新建viewmodel的实例,仍然会显示旧图像。当我关闭应用程序并再次运行时,将显示新图像。

如何停止此缓存行为?

修改

建议的副本解决了绑定到BitmapImage(视图相关类型)的问题。正如下面评论中的 Tseng 所示,这是一个非MVVM解决方案,其中数据绑定查看相关类型不会破坏模型。更具体地说,问题是如何在不破坏MVVM模式的情况下完成的缓存行为。

1 个答案:

答案 0 :(得分:0)

这个问题实际上已经被问及并回答了(感谢drcolombo指出)。但是(正如tseng所指出的),答案与MVVM模式无关,并且通过在视图模型中使用视图类型元素({{1}})来打破模式。

对于那些对非MVVM答案感兴趣的人,可以找到先前问题的链接here

非MVVM解决方案是设置

{{1}}

创建位图图像时。