2015-03-18 79 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