CefSharp WPF Web浏览器未显示或呈现

时间:2015-02-13 12:05:45

标签: c# webview cefsharp

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 个答案:

答案 0 :(得分:7)

创建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/");
    }
}

答案 1 :(得分:1)

我能想到前三个潜在的问题。但是很难从你的代码中分辨出真正的问题是什么,因为它偏离了官方的例子

  1. Cef.Initialize()移至MainWindow构造函数。只应调用一次以启动CefSharp.BrowserSubprocess.exe渲染器进程。

  2. 请参阅我对CefSharp 3 always failing Cef.Initialize()的回答,了解有关二进制文件及其位置的一些事项。 实际上,推荐的方法是在首先运行的CefSharp.MinimalExample repo中开始使用WPF示例,然后从那里调整用例。

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

答案 2 :(得分:0)

您是否尝试过更换

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

webView.Load("http://www.google.co.uk");

答案 3 :(得分:0)

与jornh提到的一样,您可能必须明确设置ChromiumWebBrowser的高度和宽度。如果您不知道确切的尺寸,将HorizontalAlignmentVerticalAlignment设置为Stretch(以填充父容器)可能也会有效。

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