WPF WebView2コントロールはMainWindow.xaml
(以下に示す) 内にあります。内部のボタン クリック イベントからExecuteScriptAsync(...)を呼び出すと(MainWindow.xaml.cs
以下に示すコード)、正常に動作します。しかし、 (同じプロジェクト内の)WebView2
別のクラスからコントロールにアクセスAnotherWindow.xaml.cs
し、同じメソッドを呼び出すと、nullExecuteScriptAsync(...)
であると不平を言う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
、null ではないことを以下に示します (したがって、コードは機能します)。
備考 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
はnullではありません(したがって、エラーがスローされます:オブジェクト参照が設定されていません):