0

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ではありません(したがって、エラーがスローされます:オブジェクト参照が設定されていません):

ここに画像の説明を入力

4

1 に答える 1