【问题标题】:Image.Source using proxyImage.Source 使用代理
【发布时间】:2012-09-04 14:18:17
【问题描述】:

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

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

另外,我有一个 设置 页面,其中有一个选项可以在我的整个 ON/OFF 全局范围内切换 Internet 代理设置 的使用em>应用程序。 如果说手动网络请求,我可以解决它,例如,像这样:

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

但它不适用于像 Image 这样内容基于 URL 的 WPF 控件 和 Internet 代理设置

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

【问题讨论】:

    标签: wpf image url webproxy


    【解决方案1】:

    您也许可以修改WebRequest.DefaultWebProxy

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

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

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

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

    【讨论】:

    • 非常感谢!很有帮助。
    【解决方案2】:

    如果您希望代理设置为配置文件,请尝试这个

    <?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>
    

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      相关资源
      最近更新 更多