Как сломать привязку, чтобы вы могли удалить актив - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть файл .jpg, который привязан к элементу изображения следующим образом:

<Image Source="{Binding FileName}"/>

Я разрешаю пользователю удалить папку со всем ее содержимым, и содержимое включает это изображение.Когда они удаляют его, изображение удаляется из интерфейса при обновлении списка.Объект удаляется в памяти просто отлично, однако удаление ресурсов на жестком диске не удается из-за нарушения прав доступа, поскольку образ уже используется.Я пытался разорвать привязку этого изображения, прежде чем удалить его, установив значение null, но я все еще получаю нарушение:

selectedLayout.FileName = null;
var dir = new DirectoryInfo("c:\\myFolder");
dir.Delete(true); // true tells it to delete recursivly

Поэтому мой вопрос, как я могу "открепить".jpg файл из свойства FileName на моей странице xaml, чтобы я мог удалить файл с моего жесткого диска и стряхнуть это исключение доступа?

1 Ответ

0 голосов
/ 28 февраля 2019

Вместо привязки к string, вы можете привязать к BitmapImage с CacheOption как BitmapCacheOption.OnLoad.

Измените тип вашего FileName исходного свойства на BitmapImage и установите его так:

BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = new Uri(@"D:\pic.png");
image.EndInit();

FileName = image;

После этого вы сможете удалить D:\pic.png, продолжая работу приложения..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...