什么是WPF WebBrowser控件的一个很好的替代品?

我有一个MDI WPF应用程序,我需要添加Web内容。 首先,看起来我有2个选项内置到Frame控件和WebBrowser控件的框架中。 鉴于这是一个MDI应用程序,它不需要很长时间才能发现这些都不会起作用。

WPF WebBrowser控件包装使用Win32图形管道的IE WebBrowser ActiveX控件 。 “ 空域 ”问题几乎总结为“抱歉,布局不会很好地结合在一起”。

是的,我已经考虑过拍摄这些内容的快照,并将鼠标和键盘事件映射回浏览器控件,但我承担不起性能损失,我真的没有时间编写并彻底测试它。

我已经找了第三方控件,但到目前为止我只找到了Chris Cavanagh的 WPF Chromium Web Browser控件。 其中包含了Awesomium 1.5 。 这些非常酷,它们与WPF布局相得益彰。 但它们不符合我的性能要求。 它们在内存消耗方面非常重,而且对CPU使用率也不友好。 更不用说还有很多车。 如果你有兴趣,我会详细说明。

那么,你们中任何人都知道一个稳定的高性能WPF Web浏览器控件吗?

谢谢。

我不认为有很多完全托管的Web控件。 在http://www.modeltext.com/html/ (我是它的作者)有一个不寻常的。

这是一个Windows窗体控件,而不是WPF。 Windows窗体 – WPF互操作性常见问题解答表明这不是问题; 但我不知道“空域问题”是否排除了使用Windows窗体控件。

从积极的一面:

  • 完全管理
  • 性能:至少低CPU(我不知道你的内存要求是多少)
  • 在应用程序中可以有多个实例

在负面:

  • 只有主流浏览器支持的function的一部分(因此,它取决于您想要的function)
  • Beta品质

编辑:

看起来很不错的工作。

谢谢。

对于这个应用程序,我需要一个function齐全的浏览器(我必须支持javascript)。

在这种情况下,这对你不起作用:这个控件公开.NET(而不是javascript)DOM API; 因此,应用程序可以实现和安装DOM事件处理程序,这些处理程序是用C#而不是javascript编写的。

是的,在WPF应用程序中托管控件将正常工作,直到您需要对对象进行分层。 由于渲染管道,所有winforms控件都会遇到此问题。 请参阅上面的链接。 您是否考虑过本地WPF端口?

WPF端口可能是可能的,因为它渲染到/通过类似于抽象设备上下文的接口,到目前为止我有两个完整/不同的实现:

  • 一个使用System.Windows.FormsSystem.Drawing
  • 另一个是我的自动化测试框架,它实现了GUI回归测试的“简单对话”模式

从理论上讲,也许我可以使用System.Windows.ControlsSystem.Windows.Media为WPF实现第三个。

有点随机,但你可能会觉得这很有趣: http : //blog.spencen.com/2008/01/19/html-to-flowdocument-converter.aspx

谢谢你:我觉得这很有意思。 WPF RichTextBox提供了许多编辑function。