Я реализовал пользовательскую ContextMenuHandler
:
public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
if (commandId == (CefMenuCommand)26501)
{
// custom logic
return true;
}
if (commandId == CefMenuCommand.Back)
{
Dispatcher.CurrentDispatcher.Invoke(() =>
{
if (chromiumWebBrowser.CanGoBack) chromiumWebBrowser.Back();
});
}
return true;
}
Пользовательская команда работает должным образом.Однако команда Back не работает.Поток не имеет доступа к экземпляру браузера:
Вызывающий поток не может получить доступ к этому объекту, так как он принадлежит другому потоку.
Отсутствие логики диспетчеризации не 't решить проблему.
- Нужно ли явно обрабатывать Back -команду, используя оператор if (будет реорганизован в swicth-case, не беспокойтесь)
- Если да, то как?
- В общем, как мне получить диспетчер экземпляра веб-браузера?