gpt4 book ai didi

c# - 在 wpf/surface 中从网络加载图像

转载 作者:太空狗 更新时间:2023-10-29 19:56:22 25 4
gpt4 key购买 nike

我正在尝试在我的 wpf 应用程序中从 Web 加载图像。

思路如下:当我点击一个按钮时,会出现一个带有附加信息的弹出窗口。在这个弹出窗口中,我使用了一些来自网络的图片。

问题:加载弹出窗口时,系统会在等待图像时挂起。我有约束力我的代码后面的图像。图像存储在 ObservableCollection 中。我试过了使用一个线程来加载图像,但每次我遇到一个异常,说该线程不是对象的所有者。

我尝试使用 Invoke 将下载的图像获取到 UserinterfaceThread,但我无法访问它。我的代码如下:

        IList<Image> imagesFromWeb = downloadImagesFromWeb(url);


DispatcherHelper.UIDispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate()
{
foreach (Image img in imagesFromWeb
{
this.ObservableCollection_Images.Add(img);
}
}

一旦下载了图像并尝试将图像添加到(已经打开的)弹出窗口中,我得到异常提示线程不是对象的所有者

有人可以指出我正确的方向吗?

最佳答案

如果您在可以使用普通 HTTP URI 寻址的公共(public) Web 服务器上有可用的图像,那么您可以直接将源设置为该图像:

<Image Source="http://www.someserver.com/myimage.png" />

WPF 会负责下载它——我认为它甚至会异步执行,尽管我不是 100% 确定。

您当然也可以使用数据绑定(bind)来做到这一点:

<Image Source="{Binding TheImage}" />

在 View 模型中

public string TheImage 
{
get { return "http://www.someserver.com/myimage.png"; }
}

关于c# - 在 wpf/surface 中从网络加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com