Недавно я обновил cefsharp wpf с 69.0.0 до 71.0.0, и создание браузера с использованием управляемогоcefbrowseradapter изменилось, и при использовании IWindowInfo в качестве параметра браузер не отображается.Раньше при простом прохождении окна ручка работала правильно.Есть ли какие-либо критические изменения, которые я должен адаптировать?
Рабочий - 69.0.0
_managedCefBrowserAdapter.CreateBrowser (BrowserSettings, RequestContext, _window.Handle, address);
нерабочая - 71.0.0
IWindowInfo window = new WindowInfo ();window.WindowHandle = _window.Handle;_managedCefBrowserAdapter.CreateBrowser (window, BrowserSettings, RequestContext, address);
Отредактировано для добавления дополнительных сведений.
Браузер CEF размещен в элементе управления WPF, который унаследован от System.Windows.Controls.В проекте используется cefsharp.wfp. Дескриптор элемента управления WPF хранится в свойстве ControlHandle.Cef инициализируется с использованием CefSettings из пространства имен cesharp.wpf.
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.
1017* Будет создано собственное окно, которое будет установлено как дескриптор окна.ManagedCefBrowserAdapter createbrowser будет создан с дескриптором окна.
_managedCefBrowserAdapter.CreateBrowser(infowindow , BrowserSettings, RequestContext, address);
Когда создается один браузер, в методе OnAfterBrowserCreated вызывается API SetParent для установки родительского элемента хоста браузера 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);
}
}
Это работало до версии 69.0.0 с вызовом _managedCefBrowserAdapter.CreateBrowser (BrowserSettings, RequestContext, window.Handle, address).В 71.0.0 он прерывается вызовом с использованием IWindowInfo, и страницы не отображаются.