2016-05-23 104 views
0

我正在通过使用ImageBrush来设置BorderBackground属性。 ImageSource绑定到我的Contact对象上的ImageUri属性。ImageSource绑定缓存图片

<Border> 
    <Border.Background> 
     <ImageBrush ImageSource="{Binding ImageUri, Mode=OneWay}" AlignmentX="Center" AlignmentY="Center" Stretch="UniformToFill"/> 
    </Border.Background> 
</Border> 

我使用Azure Blob存储来存储图像,它工作正常。但是,如果我更新已设置图像的联系人上的图像,我的ImageBrush不显示更改。我试过重新启动应用程序,它没有任何区别。图像绝对正在更新,因为我试图从网址下载它并获取新图像。另外,如果我重新安装应用程序,它会正确显示新图像。所以似乎应用程序会自动缓存旧图像并显示该图像而不是新图像。 (我已经怀疑这一点,因为它需要一点点才能第一次获得图像,但之后它是即时的。)

有没有什么办法来防止这种行为?

回答

1

显然你需要明确地告诉它不要缓存图像。将我的ImageBrush替换为:

<ImageBrush AlignmentX="Center" AlignmentY="Center" Stretch="UniformToFill"> 
    <ImageBrush.ImageSource> 
     <BitmapImage CreateOptions="IgnoreImageCache" UriSource="{Binding ImageUri, Mode=OneWay}"/> 
    </ImageBrush.ImageSource> 
</ImageBrush> 

修复了我的问题。