在导航堆栈中进一步更新(替换)绑定到图像控件的本地存储中的图像的好方法。
更具体一点:我在页面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)手机应用中解决此问题的正确方法是什么?
答案 0 :(得分:0)
您可以将上一页的observablecollection设置为null,以在更改正在修改的实际图像文件之前触发属性更改事件。 然后,您可以将observablecollection重置回正确的数据源,以相应地重置datacontext。
试试看是否有帮助。