我找到的最简单的方法是冻结包含Source(文件路径)的对象。所有可以包含图像的控件似乎都有一个.Source,如果不为null,它将锁定其指向的文件。
现在的诀窍是将Image控件更改为“只读”状态,然后将其解锁。
我的解决方案:
private Image CreatePreviewImage()
{
Image ReportImage = new Image();
Uri path = new Uri(@"C:\Folder\Image1.png");
if (File.Exists(path.OriginalString))
{
ReportImage.Name = "Report1";
ReportImage.Source = LoadImageFromFile(path);
}
return ReportImage;
}
public ImageSource LoadImageFromFile(Uri path)
{
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = path;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bitmap.DecodePixelWidth = 900;
bitmap.EndInit();
bitmap.Freeze();
return bitmap;
}