WinRT访问冲突在本地存储中复制文件

时间:2015-03-18 23:59:59

标签: c# mvvm windows-runtime windows-phone-8.1 winrt-xaml

在导航堆栈中进一步更新(替换)绑定到图像控件的本地存储中的图像的好方法。

更具体一点:我在页面A(ViewProfile.xaml)中显示一个图像,其中图像源绑定到使用

设置的ViewModel中的属性ImageSource
ImageSource= "ms-appdata:///local/image.jpg";

在第二页B(EditProfile.xaml)中,我想再次显示图像,并为用户提供更改图像的选项,例如通过使用

替换文件
StorageFolder destinationFolder = ApplicationData.Current.LocalFolder;
await profileImage.CopyAsync(destinationFolder, "image.jpg", NameCollisionOption.ReplaceExisting);

当用户在后台堆栈中返回时,更改的图像将显示在页面B上,然后显示在页面A上。

CopyAsync()因未经授权的访问冲突而失败。我的理解是,在第一页上绑定图像有效地锁定了文件,因此无法更改。由于页面A实际上并没有对图像进行任何操作,除了显示图像并且可能在更新后重新加载图像,因此无需锁定文件。

在Windows 8.1(WinRT)手机应用中解决此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以将上一页的observablecollection设置为null,以在更改正在修改的实际图像文件之前触发属性更改事件。 然后,您可以将observablecollection重置回正确的数据源,以相应地重置datacontext。

试试看是否有帮助。