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

发布于 2024-10-25 05:57:54 字数 78 浏览 8 评论 0原文

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

My app includes a Image control which has binding to a disk image file. I some condition, the image file need be updated. But the updating can't be done because the image file is open and can not be overwritten. What should I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倾城花音 2024-11-01 05:57:54

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

我对此不确定,但值得一试

You can try to remove the binding, so the image will not be used by your program
than overwrite the image file
and than re-add the binding

i'm not sure about this, but it's worth a try

誰認得朕 2024-11-01 05:57:54

现在我的解决方案是:
使用转换器将图像路径转换为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;

Now my solution is:
To use a converter to convert the image path into BitmapImage.
in the converter, load the image using a FileStream and copy the data into a MemoryStream and finally close the 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文