C# 如何在WPF中获取WebView文档?

C# 如何在WPF中获取WebView文档?,c#,wpf,webview,microsoft-edge,C#,Wpf,Webview,Microsoft Edge,我正在使用将Microsoft Edge嵌入我的WPF C应用程序中。 我找不到任何方法来获取webview的文档和innerHTML,文档中没有任何内容 这里是XAML: <UserControl x:Class="webviewtest.MainControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x

我正在使用将Microsoft Edge嵌入我的WPF C应用程序中。

我找不到任何方法来获取webview的文档和innerHTML,文档中没有任何内容

这里是XAML:

<UserControl x:Class="webviewtest.MainControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:webv="clr-namespace:Microsoft.Toolkit.Wpf.UI.Controls;assembly=Microsoft.Toolkit.Wpf.UI.Controls.WebView"
             xmlns:local="clr-namespace:webviewtest"
             mc:Ignorable="d" 
             Width="500" Height="500" >
    <Grid>
    <webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True"/>
    </Grid>
</UserControl>
我还尝试:

string GETHTML = webview_browser.InvokeScript(@"document.innerHTML").ToString();
但我得到了这个错误:

System.AggregateException:'发生一个或多个错误。'异常: 未知的名字。(HRESULT的例外情况:0x80020006 (DISP_E_UNKNOWNNAME))


谢谢

将此作为方法添加到您的
MainControl
类中

async private void WebView_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
    {
        string html = await webview.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
        _html = html; //A property of your class to store the value when the event is fired
    }
改变这一点:

<webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True"/>

为此:

<webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True" DOMContentLoaded="WebView_DOMContentLoaded"/>


加载页面后获取html文档。

抱歉,应用程序冻结且不响应,但如果我使用
document.getElementById('my_object').innerHTML它可以工作,但我需要获取页面的完整html。仍然冻结,它是
Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT.WebViewControlDOMContentLoadedEventArgs
<webv:WebView x:Name="webview_browser" Margin="0" IsJavaScriptEnabled="True" IsPrivateNetworkClientServerCapabilityEnabled="True" DOMContentLoaded="WebView_DOMContentLoaded"/>