【问题标题】:WebBrowser control must reload content every time app page is revisited (Windows Phone 7, Silverlight)每次重新访问应用页面时,WebBrowser 控件都必须重新加载内容(Windows Phone 7、Silverlight)
【发布时间】:2011-11-10 06:18:03
【问题描述】:

我正在为 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,我可能可以解决这个问题。 谢谢, 周杰伦

【问题讨论】:

  • 我相信这在芒果中是固定的。如果您退出 IE 并重新打开,即使 IE 本身也会重新加载页面,而现在它不会

标签: c# silverlight browser windows-phone mobile-browser


【解决方案1】:

你应该使用 browsertask:

using Microsoft.Phone.Tasks;

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

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

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

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2016-08-02
    • 2014-07-04
    • 2018-01-23
    相关资源
    最近更新 更多