在我的WPF页面上,我有一个像这样的图像(一个或多个):
<Image Source="{Binding Path=PicURL}"/>
另外,我有一个设置页面,可以选择在我的整个<全局>> 中全局切换开启/关闭 Internet代理设置的使用情况EM>应用。 如果要谈论手动网络请求,我可以解决它,例如,像这样:
HttpWebRequest request = ( HttpWebRequest )WebRequest.Create( ... );
if( UseProxy ) request.Proxy.Credentials = CredentialCache.DefaultCredentials;
else req.Proxy = null;
但它不适用于像 Image 这样的WPF控件,其中内容基于URL 使用 Internet代理设置。
有没有办法在整个应用 运行时全局切换代理?
答案 0 :(得分:2)
您可以修改WebRequest.DefaultWebProxy
如果那些在您的情况下不起作用,那么解决方法是您可以使用WebRequest使用/或不使用代理设置从Web自行下载“资源”。
您可以将Web请求返回的数据用作流来初始化BitmapImage,然后将其设置为Source,或者您可以保存到临时文件并使Source指向该本地文件。
您可以在Binding上编写并使用“转换器”,它可以从图像Url下载/转换为BitmapImage,也可以根据您的具体情况使用MarkupExtension。
您可能希望使用Aynchronous绑定,因为下载图像资源可能需要一段时间,而您不希望这样做会阻止您的主UI线程。
答案 1 :(得分:0)
如果您希望代理设置为配置文件
,请尝试使用此选项<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy proxyaddress="http://proxyaddress:port"
usesystemdefault="False"
bypassonlocal="True"
autoDetect="False" />
</defaultProxy>
</system.net>
</configuration>
干杯