这是我的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
时也会发生这种情况。
答案 0 :(得分:0)
首先,您对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);
}
这是输出:
从输出中可以看到,刷新完全忽略了Source
属性,并且很可能使用了某种内部URI。
因此,要解决您的问题,您只需挂起NavigationCompleted
事件并在其中执行Refresh()
-到那时,WebView
实际上将完成页面加载甚至会在内部指向新设置的URI。