CefSharp WPF升级后不会加载内容

时间:2019-05-14 15:57:42

标签: cefsharp

我最近将cefsharp wpf从69.0.0升级到71.0.0,并使用managedcefbrowseradapter创建了浏览器,并且将IWindowInfo作为参数使用时,浏览器未呈现。刚通过窗口手柄时,之前的工作正常。我必须在这里适应任何重大变化吗?

工作一个-69.0.0

_managedCefBrowserAdapter.CreateBrowser(BrowserSettings,RequestContext,_window.Handle,address);

不起作用-71.0.0

IWindowInfo window = new WindowInfo();  window.WindowHandle = _window.Handle; _managedCefBrowserAdapter.CreateBrowser(窗口,BrowserSettings,RequestContext,地址);

已编辑以添加更多详细信息。

CEF浏览器托管在WPF控件中,该控件继承自System.Windows.Controls。该项目使用cefsharp.wfp WPF控件句柄存储在ControlHandle属性中。 使用cesharp.wpf命名空间中的CefSettings初始化Cef。

 CefSettings settings = new CefSettings
                {
                    CachePath="xxxxx",
                    PersistSessionCookies = true,
                    LogSeverity = LogSeverity.Default,
                    LogFile = Path.Combine(logsFolder, "xxxxx.log"),
                    Locale = "en-US",
                    ResourcesDirPath = "xxxxxx"
                }
             Cef.Initialize(settings);

我们有一个自定义类CefBrowser,该类实现cefsharp.internals.IWebBrowserInternal并使用ManagedCefBrowserAdapter创建cefBrowser。

NativeWindow window = new NativeWindow()
window.CreateHandle(new CreateParams());
IWindowInfo infowindow = new WindowInfo();
infowindow.WindowHandle = window.Handle;

将创建一个本机窗口,并将其设置为窗口句柄。 将使用窗口句柄创建ManagedCefBrowserAdapter createbrowser。

 _managedCefBrowserAdapter.CreateBrowser(infowindow , BrowserSettings, RequestContext, address);

创建一个浏览器,在OnAfterBrowserCreated方法中,将调用SetParent API将cefsharp浏览器主机的父级设置为WPF控件。

void IWebBrowserInternal.OnAfterBrowserCreated(IBrowser browser)
        {
            _browser = browser;
                        SetParent(browser.GetHost().GetWindowHandle(), ControlHandle);          

            ResizeBrowser(Size); //WPF control size 

            OnBrowserCreated(new EventArgs());
        }

        #endregion

        #region Private Members

        private void OnBrowserCreated(EventArgs args)
        {
            EventHandler<EventArgs> handler = BrowserCreated;
            if (handler != null)
            {
                handler(this, args);
            }
        }

通过调用_managedCefBrowserAdapter.CreateBrowser(BrowserSettings,RequestContext,window.Handle,address),此版本一直工作到69.0.0版本。 对于71.0.0,使用IWindowInfo进行调用会破坏它,并且不会呈现任何页面。

0 个答案:

没有答案