WPF列表顯示圖片,刪除列表同時刪除文件的時候顯示文件被占用無法刪除
原因:因為列表里面的每一項都直接引用了文件路徑,所以文件被鎖住了,你想刪也刪不了
解決,數據加載的時候不要直接使用文件原地址,使用BitmapImage,并且設置CacheOption=OnLoad,讀取到內存,讀完馬上釋放
具體做法,在你的返回數據的實體類里面加一個BitmapImage字段和LoadImage方法,然后在頁面列表數據加載的時候執行LoadImage方法,前臺正常 ImageBrush 顯示即可
private ImageSource _imageSource;
public ImageSource ImageSource
{
get => _imageSource;
set => SetProperty(ref _imageSource, value);
}
// 加載圖片方法
public void LoadImage(string path)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(path, UriKind.Absolute);
bitmap.CacheOption = BitmapCacheOption.OnLoad; // 非常關鍵
bitmap.EndInit();
bitmap.Freeze(); // 讓圖片可以跨線程訪問,性能好
ImageSource = bitmap;
}
前臺顯示
<ImageBrush ImageSource="{Binding ImageSource}"/>

浙公網安備 33010602011771號