WebView2 控件:如下所示,HTML字符串可以通过在 Button_Click(...)
事件中调用 NavigateToString(...)
成功加载。但是我需要在 Window
或其 Grid
加载后立即加载 HTML 字符串。然而,无论是将以下代码放在构造函数MainWindow(){...}
中还是放在 rootGrid_Loaded(...)
事件中,都会抛出下面所示的错误:
问题: 我们应该如何解决这个问题,使得 HTML 字符串可以在 Window
或者 Grid
加载后立即加载?或者是否有更好的解决方案或变通方法?
MainWindow.xaml:
<Window x:Class="WpfWebView2TEST.MainWindow"
.....
xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
mc:Ignorable="d"
Style="{StaticResource CustomWindowStyle}"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button x:Name="btnTest" Content=Test" Click="btnTest_Click"/>
<wv2:WebView2 Name="MyWebView" />
</Grid>
</Window>
注意:在以下构造函数或 rootGrid_Loaded(...)
事件中调用 MyLoadHTMLString() 方法会抛出以下错误:
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyLoadHTMLString();
}
........
}
private void rootGrid_Loaded(object sender, RoutedEventArgs e)
{
MyLoadHTMLString();
}
public void MyLoadHTMLString()
{
string sHTML = "<!DOCTYPE html>" +
"<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">" +
"<head>" +
"<meta charset=\"utf-8\" />" +
"<title>Test Title</title>" +
"</head>" +
"<body>" +
"<p>Test paragraph</p>" +
"</body>" +
"</html>";
MyWebView.NavigateToString(sHTML);
}
注意:在按钮点击事件后,成功地
将HTML字符串加载到WebView2
中。
private void btnTest_Click(object sender, RoutedEventArgs e)
{
MyLoadHTMLString();
}
错误:
System.InvalidOperationException HResult=0x80131509 Message=尝试使用WebView2功能,需要在CoreWebView2初始化之前使用它的CoreWebView2。请先调用EnsureCoreWebView2Async或设置Source属性。 Source=Microsoft.Web.WebView2.Wpf
更新:
这篇MSDN文档的第二和第三段似乎提供了解决此类问题的一些方法,但我不确定如何实施。