图像源绑定缓存图像



我正在使用ImageBrush设置BorderBackground属性。ImageSource绑定到我的Contact对象上的ImageUri属性。

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

我正在使用 Azure Blob 存储来存储图像,它工作正常。但是,如果我更新已设置图像的联系人的图像,我的ImageBrush不会显示更改。我尝试重新启动应用程序,但没有区别。图像肯定正在更新,因为我尝试从 url 下载它并获取新图像。此外,如果我重新安装该应用程序,它会正确显示新图像。因此,该应用程序似乎会自动缓存旧图像并显示该图像而不是新图像。(我已经怀疑了这一点,因为第一次获得图像需要一点时间,但之后它是即时的。

有什么方法可以防止这种行为吗?

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

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

为我解决了这个问题。

最新更新