2

例如,在我的 WPF 页面上,我有一个像这样的图像(一个或多个):

<Image Source="{Binding Path=PicURL}"/>

此外,我有一个设置页面,其中包含一个选项,可以在我的整个应用程序中全局打开/关闭Internet 代理设置的使用。如果要谈论手动 Web 请求,我可以解决它,例如,像这样:

HttpWebRequest request = ( HttpWebRequest )WebRequest.Create( ... );
if( UseProxy ) request.Proxy.Credentials = CredentialCache.DefaultCredentials; 
               else req.Proxy = null;

但它不适用于 WPF 控件(如Image),其中内容基于 URL 并使用Internet 代理设置

有没有办法在运行时在整个应用程序内全局 切换代理?

4

2 回答 2

2

您也许可以修改WebRequest.DefaultWebProxy

如果这些在您的情况下不起作用,那么解决方法是您可以使用带有/或不带有代理设置的 WebRequest 自己从 Web 下载“资源”。

您可以使用 Web 请求返回的数据作为流来初始化 BitmapImage,然后您可以将其设置到 Source 中,或者您可以保存到临时文件并使 Source 指向该本地文件。

您将在 Binding 上编写并使用“转换器”,它可以将图像 Url 下载/转换为 BitmapImage,或者根据您的情况可能会使用 MarkupExtension。

您可能希望使用异步绑定,因为图像资源的下载可能需要一段时间,而且您不希望这会阻塞您的主 UI 线程。

于 2012-09-04T18:41:38.957 回答
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>

干杯

于 2014-01-08T04:10:10.323 回答