【问题标题】:WPF WebBrowser IssuesWPF Web 浏览器问题
【发布时间】:2011-04-13 20:22:27
【问题描述】:

我在 WPF 中使用 WebBrowser,如下所示:

 <WebBrowser 
     Name="SSSBrowser" 
     Margin="8,4,8,8" 
     Grid.Row="1"            
     dp:WebBrowserUtility.BindableSource="{Binding WebAddress}"/>

在 C# 中,我现在只是简单地加载它,如下所示:

private string _webAddress;
public string WebAddress 
{
  get { return "http://www.somewebsite.com/updates/message/message.htm"; }
  set { _webAddress = value; }
}

我想要做的是防止它在他们无法访问网页时显示错误,无论出于何种原因。

我如何判断网站是否返回了代码错误并禁用 WebBrowser 以便它不会在屏幕上向用户显示错误?

任何帮助将不胜感激!

【问题讨论】:

    标签: c# wpf browser


    【解决方案1】:

    您可以尝试使用System.Windows.Controls.Frame 中的NavigationService,如MSDN forum post 中所示。对于 WPF 中的 WebBrowser 控件,WebResponse 将始终为空(如帖子中所述)。

    【讨论】:

      【解决方案2】:

      WPF WebBrowser 对象似乎没有ErrorOpeningURL 事件,因此,根据以前的经验,您可以连接到Navigated 事件并检查URI 是否为IE 错误页面(res ://Error.html.. IIRC)或挖掘NavigationEventArgsWebResponse 并检查标题。

      要抑制错误,隐藏 WebBrowser 组件,也许通过礼貌的消息覆盖 - 您的用户会想知道操作没有成功,但不必看到导航失败。

      【讨论】:

      • 我觉得我很接近这个选项。此时我有' private void SSSBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)' 但我不确定我要在哪里验证是否存在问题。有什么建议吗?
      • WebResponse 始终为空
      【解决方案3】:

      如果我是对的,源属性是不可绑定的,因为它不是依赖属性。

      看看这篇文章:

      databind the Source property of the WebBrowser in WPF

      赫伯

      【讨论】:

        【解决方案4】:

        不确定是否通过 WPF,但如果您使用 HttpWebRequest 和 HttpWebResponse 以编程方式首先尝试获取您的 url,响应将为您提供 http StatusCode,即 200、404 等。如果您想检查可能会很有用一个 200 首先并抢先禁用浏览器。不完全是您问题的答案,而是一种可能性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-08
          • 1970-01-01
          • 1970-01-01
          • 2012-01-20
          • 2012-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多