WP7将图像控件绑定到需要cookie的图像URI

3

我正在开发一个应用程序,它会消费需要登陆的RESTful web服务。这个登陆验证是基于session cookie的,为了下载任何数据,我使用了以下扩展:WebClient

public class CookieWebClient : WebClient
{
    [SecuritySafeCritical]
    public CookieWebClient() : base()
    {
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).CookieContainer = App.GlobalCookieContainer;
        }
        return request;
    }
}

然而,返回的部分数据是不同 ListBox 中显示的图像缩略图的 URI。在我必须为 Web 服务使用登录之前,我只需将 ImageSource 绑定到数据中指定的 URI 即可:

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

然而,现在我必须使用登录,因此在获取图像时必须提供一个cookie。因此,我认为可以使用解决问题,我将传递URI,它将使用我的扩展WebClient下载BitmapImage,直到我记起在WP7上只能使用异步调用WebClient。因此,我的问题是如何为具有请求中必须有cookie的ListBoxItem中的Image控件下载图像?谢谢!

为什么异步调用会阻止您使用WebClient? - Igor Ralic
1
@igrali 我认为它阻止了他在 IValueConverter 中使用它,而不是一般情况下。 - Nate
@Nate,哦,我明白了,好的……那我想他应该不应该使用 IValueConverter 了吧? :-) - Igor Ralic
可能有更好的方法,但您可以尝试将它们缓存到隔离存储中并从那里绑定。 - Nate
@Nate 最近我们公司接待了一位微软WP开发人员,他谈到了WP7中的图像处理。事实证明,图像处理在内存方面非常糟糕,这就是为什么我希望尽可能地使用内置控件来处理图像,以避免内存泄漏。 - Zappel
1个回答

0
你可以使用http类下载图像,并手动设置图像:
var stream = httpResponse.GetResponseStream(); 
var bitmap = new BitmapImage();
bitmap.SetSource(stream);
image.Source = bitmap;

但是这对于简单的XAML绑定不起作用...(但您可以将此逻辑包装在附加属性中)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接