我有一个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属性,它运行正常。
这个让我挠头。 。
答案 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);
}
}