8

我是 CefSharp 的新手,我创建了一个类库项目并引用了 CefSharp 库来呈现 Web 浏览器,但是我在显示 Web 浏览器时遇到了一些问题。请找到确切的代码

WebBrowser_test1:

 public partial class ChildWidget : Window
    {
        public CefSharp.Wpf.ChromiumWebBrowser webView;
        public Widget()
        {
            InitializeComponent();
            CefSharp.CefSettings settings = new CefSharp.CefSettings();
            settings.PackLoadingDisabled = true;
            if (CefSharp.Cef.Initialize(settings))
            {
                webView = new CefSharp.Wpf.ChromiumWebBrowser();
                main_grid.Children.Add(webView);
                webView.Address = "http://www.google.co.uk";
            }
        }
    }

我在另一个项目中引用了这个库(dll)

public MainWindow()
        {
            InitializeComponent();
            Button newbutton = new Button();
            newbutton.Width = 50;
            main_grid.Children.Add(newbutton);
            newbutton.Click += ButtonClick;
        }

        private void ButtonClick(object sender, RoutedEventArgs e)
        {
            try
            {
                Webbrowser_test1.ChildWidget childWidget = new Widget();
                childWidget.Show();
            }
            catch (Exception)
            {

                throw;
            }
          }

现在在按钮上单击我将打开 (WebBrowser_test1) 子小部件,我将在其中显示 Web 浏览器 .. 当窗口打开时它显示为空白。

如果我遗漏了什么,请告诉我

4

4 回答 4

8

IsBrowserInitializedChanged创建后订阅ChromiumWebBrowser。然后,一旦浏览器初始化,您就可以调用Load并显示您的控件。

...
    _browser = new ChromiumWebBrowser();
    mainGrid.Children.Add(_browser);
    _browser.IsBrowserInitializedChanged += OnIsBrowserInitializedChanged;
...

void OnIsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    if (_browser.IsBrowserInitialized)
    {
        _browser.Load("https://www.google.com/");
    }
}
于 2016-10-21T15:47:07.403 回答
1

我可以想到前三个潜在问题。但是很难仅从您的代码中判断真正的问题是什么,因为它与官方示例有点偏离

  1. 移动Cef.Initialize()到您的MainWindow构造函数。它应该只被调用一次来启动CefSharp.BrowserSubprocess.exe渲染器进程。

  2. 请参阅我对CefSharp 3 始终失败 Cef.Initialize()的回答,了解有关二进制文件及其位置的一些检查事项。确实,推荐的方法是首先运行 CefSharp.MinimalExample 存储库中的 WPF 示例,然后从那里根据您的用例进行调整。

  3. 我不确定如果ChromiumWebBrowser()没有明确设置宽度和高度是否有效。0x0 窗口可能不会接收任何呈现的内容。我没有尝试过使用最近的代码。

于 2015-02-18T05:57:03.950 回答
0

就像 jornh 提到的那样,您可能必须明确设置ChromiumWebBrowser. 如果您不知道确切的大小,设置HorizontalAlignmentVerticalAlignmentto Stretch(填充父容器)也可能会起作用。

您是否检查过是否Cef.Initialize()实际返回true?您可能会丢失一些文件,在这种情况下,CefSharp 并不总是给出明确的错误消息。

于 2015-02-26T08:41:38.353 回答
0

Have you tried replacing

webView.Address = "http://www.google.co.uk";

with

webView.Load("http://www.google.co.uk");
于 2015-02-13T16:34:00.680 回答