2015-03-18 63 views
1

如何更新(替换)绑定到导航堆栈中的图像控件的本地存储器中的映像?WinRT访问冲突复制本地存储器中的文件

更具体地:我表示页A(ViewProfile.xaml)与绑定到视图模型的属性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

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

试试看看是否有帮助。

+0

谢谢你的回答。这两个页面中的控件都绑定到相应的(Prism)ViewModel的各个属性。属性更改事件由设置者触发。我现在在第一页视图模型的OnNavigatedFrom()方法中设置了'ImageSource = null',并在'OnNavigatedTo()'中返回到图像文件。仍然获得未经授权的访问例外。我是否正确应用了您的建议? – jerry 2015-03-19 16:19:47