【问题标题】:How can I use a ChromiumWebBrowser when Collapsed折叠时如何使用 ChromiumWebBrowser
【发布时间】:2019-08-15 03:40:30
【问题描述】:

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

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

VisibilityCollapsed 时如何加载页面?

【问题讨论】:

  • 您是否考虑过将控件的高度或宽度设置为零而不是折叠它?
  • @Andy, ChromiumWebBrowser 似乎并不真正关心Visibility - 它只是在等待非零ActualSize。我不确定一个非零维度会发生什么,但我仍然认为明确的CreateOffscreenBrowser 调用更可靠。

标签: c# wpf cefsharp


【解决方案1】:

创建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));
    }
}

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多