Проблема не в DataContext, а просто в том, как WPF загружает изображения из файлов.
Когда вы привязываете свойство Source
элемента управления Image к строке, содержащей путь к файлу, WPF внутренне создает новый объект BitmapFrame из пути в основном следующим образом:
string path = ...
var bitmapImage = BitmapFrame.Create(new Uri(path));
К сожалению, это сохраняет файл изображения, открытый WPF, так что вы не можете его удалить.
Чтобы получить вокруг этого вы должны изменить тип свойства изображения на ImageSource
(или производный тип) и загрузить изображение вручную, как показано ниже.
public ImageSource ImageSource { get; set; } // omitted OnPropertyChanged for brevity
private ImageSource LoadImage(string path)
{
var bitmapImage = new BitmapImage();
using (var stream = new FileStream(path, FileMode.Open))
{
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
bitmapImage.Freeze(); // optional
}
return bitmapImage;
}
...
ImageSource = LoadImage(@"C:\Users\Dave\Desktop\Duplicate\Swim.JPG");