Обновление веб-просмотра после установки источника или навигации отменяет навигацию в UWP - PullRequest
0 голосов
/ 26 ноября 2018

Это мое mainpage.xaml.cs:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        wv.Source = new Uri("https://www.youtube.com");
        //wv.Refresh();
    }
}

, это работает - как только я запускаю приложение, YouTube загружается.Но когда я раскомментирую wv.Refresh, он перестает работать - я вижу только белый фон.Также происходит, когда я использую wv.Navigate вместо wv.Source.

1 Ответ

0 голосов
/ 26 ноября 2018

Прежде всего, у вас есть хорошие вопросы о WebView :-D.

Я отладил его, и кажется, что, хотя Source установлен в URI, внутренне WebViewвсе еще указывает на страницу about:blank, и обновление происходит слишком рано, поэтому навигация к вашему URI отменяется, и вместо этого обновляется пустая страница.

Я получил следующий код:

public MainPage()
{
    this.InitializeComponent();
    webview.NavigationStarting += Webview_NavigationStarting;
}

private void Webview_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
    Debug.WriteLine("Navigating " + args.Uri);
}

private void SetNextSource()
{        
    var uri = new Uri("https://www.google.com");
    Debug.WriteLine("Setting " + uri);
    webview.Source = uri;
    webview.Refresh();
    Debug.WriteLine("Set  " + webview.Source);
}

А вот и вывод:

Sample run

Как видно из вывода, обновление полностью игнорировало свойство Source и, скорее всего,использовал какой-то внутренний URI.

Таким образом, чтобы решить вашу проблему, вы можете просто подключить событие NavigationCompleted и выполнить вместо него Refresh() - к этому времени WebView будет фактическизавершите загрузку страницы и даже внутренне будут указывать на вновь установленный URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...