Невозможно удалить файл при использовании в 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; но это не помогло.

Что я делаю неправильно? Как я могу удалить этот файл (или, точнее, сделать его неиспользованным).

Ответы на вопрос(1)

Ваш ответ на вопрос