如何更新图像文件绑定到图像控件?

Posted

技术标签:

【中文标题】如何更新图像文件绑定到图像控件?【英文标题】:How to update image file binding to Image control? 【发布时间】:2011-07-20 03:53:22 【问题描述】:

我的应用程序包含一个绑定到磁盘映像文件的图像控件。我有一些条件,图像文件需要更新。但是无法进行更新,因为图像文件已打开且无法覆盖。我该怎么办?

【问题讨论】:

【参考方案1】:

您可以尝试删除绑定,这样您的程序就不会使用该图像 而不是覆盖图像文件 然后重新添加绑定

我不确定,但值得一试

【讨论】:

它不起作用。我试过BindingOperations.ClearBinding(); img.Source = null;GC.Collect(),但图像仍然是写保护的。【参考方案2】:

现在我的解决方案是: 使用转换器将图像路径转换为 ​​BitmapImage。 在转换器中,使用 FileStream 加载图像并将数据复制到 MemoryStream 中,最后关闭 FileStream。

        BitmapImage bmp = new BitmapImage();
        bmp.CacheOption = BitmapCacheOption.OnLoad;
        bmp.BeginInit();
        var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
        var memStream = new MemoryStream();
        memStream.SetLength(fileStream.Length);
        fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length);
        memStream.Flush();
        fileStream.Close();
        bmp.StreamSource = memStream;
        bmp.EndInit();
        return bmp;

【讨论】:

以上是关于如何更新图像文件绑定到图像控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在后面的代码中绑定嵌入的图像

如何将图像从图像控件保存到文件夹 Win 8 应用程序

加载时将图像绑定到文件上传字段

WPF数据绑定到图像文件永远锁定该文件[重复]

使用搅拌机,如何将电枢添加到 svg 图像

在 Windows 10 中处置图像控件