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

时间:2010-05-29 17:26:30

标签: c# wpf wpf-controls webbrowser-control

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

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

是的,我考虑过拍摄网页内容的快照,然后将鼠标和键盘事件映射回浏览器控件,但我无法承受性能损失而且我真的没有时间写和彻底测试一下。

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

那么,你们是否知道一个稳定的高性能 WPF 网页浏览器控件?

感谢。

1 个答案:

答案 0 :(得分:4)

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

这是一个Windows窗体控件,而不是WPF。 Windows Forms – WPF Interoperability FAQ表明这不是问题;但我不知道“空域问题”是否排除了使用Windows窗体控件。

好的一面:

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

在负面:

  • 只有主流浏览器支持的功能的一部分(因此,它取决于您的需求)
  • Beta质量

修改

  

看起来很不错。

谢谢。

  

对于这个应用程序,我需要一个功能齐全的浏览器(我必须支持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提供了许多编辑功能。