Элемент управления WebBrowser должен перезагружать контент при каждом повторном посещении страницы приложения (Windows Phone 7, Silverlight) - PullRequest
4 голосов
/ 05 сентября 2011

Я пишу приложение для Windows Phone 7 / Silverlight. Когда приложение захоронено и повторно активировано на странице приложения, содержащей элемент управления WebBrowser (я сохранил Uri в состоянии приложения) или , на эту же страницу приложения перемещается NavigationService .GoBack () или кнопка возврата телефона, кажется, что, пока элемент управления все еще имеет значение webbrowser.source, он должен отображаться очень хорошо, но это не так. Если я не использую метод Navigate (), он показывает белый / пустой экран, независимо от того, что я пытаюсь. К сожалению, использование метода Navigate () приводит к необходимости повторной загрузки веб-содержимого. Это особенно расстраивает, когда только 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. Спасибо, Jay

1 Ответ

0 голосов
/ 25 октября 2011

Вы должны использовать 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-адрес страницы, которую вы хотите посетить.

...