Windows runtime 上一页GridViewItem中的图像阻止文件访问

Windows runtime 上一页GridViewItem中的图像阻止文件访问,windows-runtime,storagefile,Windows Runtime,Storagefile,我有一个带有GridView的页面配料.xaml。此GridView显示成分对象的列表。对于每个项目,通过绑定到包含文件路径的成分对象的字符串属性(在应用程序的本地文件夹中)来显示图像 当我单击某个项目时,应用程序将导航到配料.xaml,这是一个详细信息页面,其中显示图像和所有详细信息。有设置新图像或替换/删除当前图像的功能 当没有图像时,一切都像一个符咒。但是,一旦文件已经存在,我在尝试删除或替换当前文件时就会出现以下错误: “访问被拒绝。(HRESULT的异常:0x80070005(E_AC

我有一个带有GridView的页面配料.xaml。此GridView显示
成分
对象的列表。对于每个项目,通过绑定到包含文件路径的
成分
对象的字符串属性(在应用程序的本地文件夹中)来显示图像

当我单击某个项目时,应用程序将导航到配料.xaml,这是一个详细信息页面,其中显示图像和所有详细信息。有设置新图像或替换/删除当前图像的功能

当没有图像时,一切都像一个符咒。但是,一旦文件已经存在,我在尝试删除或替换当前文件时就会出现以下错误: “访问被拒绝。(HRESULT的异常:0x80070005(E_ACCESSDENIED))”

起初我认为component.xaml中的图像是问题所在,因为它仍然显示我试图删除的图像。因此,我在代码中添加了以下行:

this.ingredientImage.Source=null;
不过,代码仍在抛出异常。因此我尝试了其他方法:我从配料.xaml中的GridView中删除了该图像。图像唯一未显示的位置是配料.xaml。当我尝试替换/删除图像时,
image.Source
被设置为null,文件被成功替换/删除


显然,上一页GridView中的图像仍在阻止该文件,但我不知道如何在导航离开时释放该文件。

如何在components.xaml中显示图像?根据它们的加载方式,可能有不同的方法来关闭图像文件。我将Source属性设置为URI字符串,这导致了上面的错误。现在,我已经改变了使用图像的方式:在需要时加载图像,并将其复制到BitmapImage,而不仅仅是字符串。现在效果很好。很高兴你解决了这个问题@戴维德桑蒂斯,我也有同样的问题。您能否评论一下“在需要时加载它们,并将它们复制到位图图像”的方式?我绑定到URI是因为它是可序列化的…@7200rpm,而不是将图像的路径存储在字符串属性中,我现在将图像本身存储在
WriteableBitmap
属性中。每当我加载配料时,控制器就会使用当前真实图像作为模板创建一个新的
WriteableBitmap
。然后,在WPF中,我只需将
Image
Source
属性绑定到我的
WriteableBitmap
属性。这样,我可以删除/更改源映像,而不会遇到拒绝访问错误。