Сейчас я работаю над операцией редактирования в моем приложении. Таким образом, в операции редактирования есть возможность изменить изображение, и в то же время имя файла, в котором хранится изображение контакта, не может быть переименовано (в течение одного сеанса работы файлы изображений будут меняться, но весь этот файл будет иметь одно и то же имя) .
И я использовал перегрузку метода CopyAsync
(документы для этого метода здесь ), который, как я понимаю, должен заменить файл на существующий файл с тем же именем.
Я получаю imageFile
переменную FileOpenPicker
. Код ниже запускается каждый раз, когда я выбираю изображение по FileOpenPicker
. И когда я снова выбираю изображение в результате Image
Управление пользовательским интерфейсом показывает мне предыдущее выбранное изображение. Я ожидаю, что Image
будет просматривать последнее выбранное мной изображение, но этого не произошло.
public BitmapImage Image { set; get; }
//Copy of the file that saved in temporary storage
StorageFile fileForView = await imageFile.CopyAsync
(ApplicationData.Current.TemporaryFolder,
fileName,
NameCollisionOption.ReplaceExisting);
Image = new BitmapImage(new Uri(fileForView.Path));
Возможно, я неправильно понимаю логику метода CopyAsync
, если я в этом случае, пожалуйста, покажите мне, как заставить мой план работать с этим методом, если это возможно. В противном случае предложите свое решение, потому что я не знаю, как это сделать.
Также я пытался сделать это методом CopyAndReplaceAsync
. Но до сих пор нет результата. Я делаю это так:
if (null != await ApplicationData.Current.TemporaryFolder.TryGetItemAsync(fileName))
{
StorageFile storageFile = await ApplicationData.Current.TemporaryFolder.GetFileAsync(fileName);
await storageFile.CopyAndReplaceAsync(imageFile);
}