2016-08-17 6 views
0

Я ссылаюсь на «CefGlue.Samples.WpfOsr» внутри образцов CEFGlue, доступных в https://bitbucket.org/xilium/xilium.cefglue/downloads, и пытается интегрировать их в сборку. Независимо от того, что когда-либо я делаю, элемент управления браузером не получает renderd в представлении при запуске в качестве подключаемого модуля. Однако это отлично работает при работе в автономном режиме. Может ли кто-нибудь посоветовать, как это сделать?CEFGlue в плагине enviornment not rendering

+0

Что вы подразумеваете под плагином? Проверьте Program.cs - он содержит некоторый код инициализации. – fddima

ответ

0

Итак, я нашел причину, по которой элемент управления не показывался. Где-то в базе кода CEFGlue была строка, которая заставляет его пересекать визуальное дерево, ища тип «Окно», чтобы получить его родительский дескриптор окна и отобразить пользовательский интерфейс управления CEFBrowser.

Window parentWnd = FindParentOfType<Window>(this); 

private static T FindParentOfType<T>(DependencyObject obj) where T : DependencyObject 
     { 
      DependencyObject parentObj = VisualTreeHelper.GetParent(obj); 
      if (parentObj == null) 
       return null; 

      // Try to type cast the parent to the desired type. 
      // If the cast succeeds, we've found the desired parent. 
      T parent = parentObj as T; 
      if (parent != null) 
       return parent; 

      // If we get here, the current parent wasn't of the right type, so keep looking recursively 
      return FindParentOfType<T>(parentObj); 
     } 

Может быть из-за плагина enviornment у меня есть, это визуальное дерево не было такого рода родительского окна, в результате чего нулевой дескриптор. Поэтому решение в моем случае состояло в том, чтобы найти главный дескриптор основного процесса родительского процесса и передать его в CEF. Надеюсь, это может помочь кому-то с подобными ситуациями.