首页 > 解决方案 > 折叠时如何使用 ChromiumWebBrowser

问题描述

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

System.Exception: 浏览器尚未初始化。Load只能在底层 CEF 浏览器初始化后调用 ( CefLifeSpanHandler::OnAfterCreated)。

Visibility是时如何加载页面Collapsed

标签: c#wpfcefsharp

解决方案


创建一个子类,ChromiumWebBrowserInitial Visibility Collapsed 时的渲染问题中所述。要解决NullReferenceExceptionin AbstractRenderHandler.OnPaint,您需要确保已经创建了可视化树(通过调用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));
    }
}

推荐阅读