【发布时间】:2010-11-02 02:15:11
【问题描述】:
我一直在拼命寻找一种在 WPF 应用程序中显示 HTML 的简单方法。
有一些选择:
1) 使用 WPF WebBrowser 控件
2) 使用框架控件
3) 使用第三方控件
但是,我遇到了以下问题: 1) WPF WebBrowser 控件不是真正的 WPF(它是一个包装在 WPF 中的 Winforms 控件)。我找到了一种为此创建包装器并使用 DependencyProperties 导航到具有绑定和属性更改的 HTML 文本的方法。 这样做的问题是,如果你在 WPF 滚动查看器中放置一个 Winforms 控件,它不尊重 z-index,这意味着 Winform 始终位于其他 WPF 控件之上。这很烦人,我试图通过创建一个承载 ElemenHost 等的 WindowsFormsHost 来解决它。但这显然完全破坏了我的绑定。
2) 如果 Frame Control 显示 HTML 内容,则会出现同样的显示问题。不是一个选项。
3) 我还没有找到 WPF 的原生 HTML 显示。所有选项都是winforms,并且存在上述问题。
我目前唯一的出路是使用 Microsoft 的错误 HtmlToXamlConverter,它有时会严重崩溃。 (MSDN)
在没有这些问题的情况下,是否有人对如何在 WPF 中显示 HTLM 有任何其他建议?
抱歉问了这么长的问题,希望有人知道我在说什么......
【问题讨论】:
-
您能否备份并描述您需要 HTML 显示的内容?可能有一种更简单或更本机的方式来实现您的目标,因为将 HTML 塞进 XAML 似乎是最困难的。
-
好吧,我只需要在 WPF 应用程序中显示 HTML(主要由 Outlook 生成,但也来自 webapps 中的 HTML 编辑器)。不需要编辑 HTML,因为这发生在不同的组件中。我已经尝试将此组件设为只读并将其从所有编辑功能中剥离,但这不适用于我的绑定(它也是一个 winform 组件)。对于显示 HTML,我的意思是显示格式、颜色、字体大小、链接......图像也会很好。
-
找到好方法了吗?我遇到了同样的问题。
-
discorax > 现在我正在使用 cmets 中描述的技术来回答:我使用了微软的 html-to-xaml 转换器代码,这似乎适用于我抛出的 75% 的 html在它。它需要在这里和那里进行一些调整来支持我们的要求。对于另外 25%,我使用显示 html 正文的正则表达式/字符串替换函数。我还在等待原生 WPF 方式来做到这一点......