绑定WPF WebBrowser中的源属性将不会接受片段

时间:2014-11-14 11:38:22

标签: c# wpf webbrowser-control

我有一个WPF WebBrowser,其Source属性绑定到另一个对象的字符串属性。当我更改另一个对象的字符串时,浏览器会正确更新到新地址,因此我知道绑定工作正常。我正在使用本地(file:///)网址。

我遇到的问题是当网址有片段时,例如file:///path/page.html#anchor1。在这种情况下,Source属性是使用Uri设置的,但它不需要 - 当我在set之后查看Source属性时,该值不变。

public static void BindableSourcePropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
    WebBrowser browser = o as WebBrowser;
    if (browser != null)
    {
        Uri uri = e.NewValue as Uri;

        if (uri != null && !string.IsNullOrEmpty(uri.OriginalString))
        {
            browser.Source = uri;
        }
    }
}

我已经单步执行以确保uri正确并执行browser.Source = uri;语句。没有异常被抛出。当Uri有片段时,它不会设置Source值。

我写了一个小例子,我用一个包含片段的Uri直接设置了一个WebBrowser的Source属性,它运行正常。

这个让我挠头。 。

1 个答案:

答案 0 :(得分:0)

我最后只是调用了Navigate()方法。

public static void BindableSourcePropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
    {
        WebBrowser browser = o as WebBrowser;
        if (browser != null)
        {
            string uri = e.NewValue as string;                
            browser.Navigate(uri);
        }
    }