折叠时如何使用 ChromiumWebBrowser

How can I use a ChromiumWebBrowser when Collapsed

我有一个 ChromiumWebBrowser 控件,VisibilityCollapsed。在可见性设置为 Visible 之前,页面未加载并且许多调用失败:

System.Exception: The browser has not been initialized. Load can only be called after the underlying CEF browser is initialized (CefLifeSpanHandler::OnAfterCreated).

如何在 VisibilityCollapsed 时加载页面?

创建 ChromiumWebBrowser 的子类,如 Render problems when Initial Visibility Collapsed 中所述。要解决 AbstractRenderHandler.OnPaint 中的 NullReferenceException,您需要确保已创建可视化树(通过调用 ApplyTemplate)。

示例:

internal sealed class CollapsableChromiumWebBrowser : ChromiumWebBrowser
{
    public CollapsableChromiumWebBrowser()
    {
        this.Loaded += this.CollapsableChromiumWebBrowser_Loaded;
    }

    private void CollapsableChromiumWebBrowser_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        // Avoid loading CEF in designer
        if (DesignerProperties.GetIsInDesignMode(this))
        {
            return;
        }

        // Avoid NRE in AbstractRenderHandler.OnPaint
        ApplyTemplate();
        // https://github.com/cefsharp/CefSharp/issues/1412
        CreateOffscreenBrowser(new Size(400, 400));
    }
}