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浏览器..当窗口打开时,它显示为空白。
如果我遗漏了任何内容,请告诉我
答案 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)
我能想到前三个潜在的问题。但是很难从你的代码中分辨出真正的问题是什么,因为它偏离了官方的例子
将Cef.Initialize()
移至MainWindow
构造函数。只应调用一次以启动CefSharp.BrowserSubprocess.exe
渲染器进程。
请参阅我对CefSharp 3 always failing Cef.Initialize()的回答,了解有关二进制文件及其位置的一些事项。 实际上,推荐的方法是在首先运行的CefSharp.MinimalExample repo中开始使用WPF示例,然后从那里调整用例。
我没有确定ChromiumWebBrowser()
没有明确设置宽度和高度。 0x0窗口可能不会接收任何呈现的内容。我没有尝试使用最近的代码。
答案 2 :(得分:0)
您是否尝试过更换
webView.Address = "http://www.google.co.uk";
与
webView.Load("http://www.google.co.uk");
答案 3 :(得分:0)
与jornh提到的一样,您可能必须明确设置ChromiumWebBrowser
的高度和宽度。如果您不知道确切的尺寸,将HorizontalAlignment
和VerticalAlignment
设置为Stretch
(以填充父容器)可能也会有效。
您是否检查过Cef.Initialize()
是否实际返回true
?你可能会遗漏一些文件,在这种情况下,CefSharp并不总是给出明确的错误信息。