Невозможно удалить файл при использовании в DataContext
Мое приложение показывает изображения на экране (изображения, основанные на файлах на локальном компьютере), и пользователи могут удалять их при необходимости.
Каждый раз, когда я пытаюсь удалить файл, это приводит к следующему сообщению об ошибке:
"The process cannot access the file 'C:\\Users\\Dave\\Desktop\\Duplicate\\Swim.JPG' because it is being used by another process."
Я понимаю сообщение об ошибке.
у меня естьUserControl
который принимает путь к файлу (через параметр в конструкторе), а затем привязывает его к нему (UserControl)DataContext
.
Как часть отладки этой проблемы я обнаружил, что проблема связана с установкой DataContext в UserControl. Если я удалюthis.DataContext = this;
из моего UserControl я могу удалить файл.
Итак, мой TestUnit выглядит
Ui.UserControls.ImageControl ic = new ImageControl(
@"C:\Users\Dave\Desktop\Duplicate\Swim.JPG");
try
{
File.Delete(@"C:\Users\Dave\Desktop\Duplicate\Swim.JPG");
}
catch (Exception ex)
{
Assert.Fail(ex.Message);
}
UserControl CodeBehind
public ImageControl(string path)
{
this.FilePath = path;
this.DataContext = this; // removing this line allows me to delete the file!
InitializeComponent();
}
#region Properties
private string _filePath;
public string FilePath
{
get { return _filePath; }
set
{
_filePath = value;
OnPropertyChanged("FilePath");
}
}
Если это имеет значение, мой UserControl XAML использует элемент управления «Изображение», привязанный к «FilePath»
Я пытался сделать UserControl нулевым перед удалением, это не помогло.
Я попытался добавить интерфейс IDisposible в свой UserControl и вDispose()
настройка методаthis.DataContext = null;
но это не помогло.
Что я делаю неправильно? Как я могу удалить этот файл (или, точнее, сделать его неиспользованным).