C# 在本地存储中复制文件时发生WinRT访问冲突

C# 在本地存储中复制文件时发生WinRT访问冲突,c#,mvvm,windows-runtime,windows-phone-8.1,winrt-xaml,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 = Applica

更新(替换)本地存储中绑定到导航堆栈中更上层的图像控件的图像的好方法是什么

更具体地说:我在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页上

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


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

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


试试看是否有帮助。

谢谢你的回答。两个页面中的控件都绑定到相应(Prism)ViewModel的各个属性。属性更改事件由setter触发。现在,我在第一页的viewmodel的
OnNavigatedFrom()
方法中设置了
ImageSource=null
,并返回到
OnNavigatedTo()
中的图像文件。仍在获取未经授权的访问异常。我正确地运用了你的建议吗?