4

我正在为 Windows Phone 7/Silverlight 编写应用程序。当应用程序在包含 WebBrowser 控件的应用程序页面上被删除并重新激活时(我已将 Uri 保存在应用程序状态)通过 NavigationService.GoBack() 或手机后退按钮导航到同一应用程序页面时,似乎只要控件仍然具有 webbrowser.source 值,它就应该呈现得很好,但事实并非如此。除非我使用 Navigate() 方法,否则无论我尝试什么,它都会显示白色/空白屏幕。不幸的是,使用 Navigate() 方法会导致 Web 内容不必要地再次下载。当只使用 GoBack() 来返回带有 WebBrowser 控件的应用程序页面时,尤其令人沮丧,这在我的应用程序中很常见。

    private void OnWebBrowserLoaded(object sender, RoutedEventArgs e)
    {
        //webBrowser1.Source = CurrentUri; //does not work, results in white/blank browser page
        webBrowser1.Navigate(CurrentUri); //works, but page has to reload from web, bad UX
    }

关于解决这个问题的任何建议?我还尝试将相同的代码放在页面加载处理程序中。它以同样糟糕的方式表现。

我也尝试过保存 HTML (SaveToString) 并从应用程序状态 (NavigateToString) 重新加载它,但由于某种原因网页没有完全呈现,即使 HTML 看起来很好。另外,我想访问 Host 和 Uri 属性。如果我可以让 HTML 从 NavigateToString 呈现 OK,我可能可以解决这个问题。谢谢,杰

4

1 回答 1

0

您应该使用浏览器任务:

using Microsoft.Phone.Tasks;

 WebBrowserTask browse = new WebBrowserTask();
            browse.Uri = new Uri(URL, UriKind.RelativeOrAbsolute);
                //new Uri(URL,UriKind.RelativeOrAbsolute);
            browse.Show();

这应该可以解决您的问题。

URL 将是您要访问的页面的 URL。

于 2011-10-25T06:14:21.377 回答