WPF WebView2控件在里面MainWindow.xaml
(如下所示)。从内部的按钮单击事件(代码如下所示)调用ExecuteScriptAsync(...)时,它工作正常。MainWindow.xaml.cs
但是当WebView2
从另一个类AnotherWindow.xaml.cs
(在同一个项目中)访问控制并调用相同的ExecuteScriptAsync(...)
方法时,它抱怨CoreWebView2
为空
问题:我可能缺少什么,如何解决?
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="webView" />
</Grid>
</Window>
备注1:当按钮及其点击事件在里面时,以下工作正常MainWindow.xaml.cs
private async void btnTest1_Click(object sender, RoutedEventArgs e)
{
await webView.CoreWebView2.ExecuteScriptAsync("window.print();");
}
下面的调试模式显示CoreWebView2
不为空(因此代码有效):
备注2AnotherWindow.xaml.cs
:当按钮及其点击事件在同一个项目的另一个窗口内但访问的WebView2
控件时,以下不起作用MainWindow.xaml
private async void btnPrint_Click(object sender, RoutedEventArgs e)
{
MainWindow mainWindow = new MainWindow();
await mainWindow.webView.CoreWebView2.ExecuteScriptAsync("window.print();");
}
AnotherWindow.xaml.cs
下面显示的调试模式CoreWebView2
不为空(因此引发错误:未设置对象引用):