8

我从 Windows 8 开始,我正在尝试将 HTML 转换为RichTextBlock.

读过我可以使用这个函数: HtmlUtilities.ConvertToText在 aTextBlock但我找不到在 a 中使用这个函数的方法RichTextBlock

根据我的理解和尝试,我无法扩展RichTextBlock因此每次调用 a 时我都无法应用此功能RichTextBlock

此外,我找不到任何方法将文本绑定到 aRichTextBlock并且仅为简单的 HTML构建解析器(我只想要段落和斜体/粗体)似乎有点矫枉过正。另外,我不知道应该在哪里进行解析,因为我RichTextBlock似乎无法扩展。

我不能使用,WebView因为我需要透明度(从我读过的内容来看, WebView 没有)。

编辑

@mydogisbox 让我看到我的研究走得太远了。

我可以HtmlUtilities.ConvertToText在可以绑定到RichTextBlock. 我无法绑定它,因为我试图在 <Run Text="{Binding TextHTML}" />没有<Paragraph>标签的情况下进行。

但是HtmlUtilities.ConvertToText不保留斜体或粗体。只有段落:/。

4

1 回答 1

4

我最终使用了gitHub 上的一个包,它将HTML 转换为 RickTextBlock。

基本上您只需要打开包管理器控制台(工具 > 库包管理器 > 包管理器控制台)并安装运行的包Install-Package RichTextBlock.Html2Xaml

然后你打开 RichTextBlockProperties.cs 并且你有你需要复制的行。就我而言,我必须添加命名空间:

xmlns:rtbx="using:EventTests.Common"

然后您可以使用以下方法绑定具有 HTML 的属性:

<RichTextBlock rtbx:Properties.Html="{Binding ...}"/>

一些问题和一些解决方案

我发现这个库的一个问题是它如何处理没有 div 的简单 html。像:

<p>Testing <i>italic</i> and something more.</p>
<p>More testing </p>

这打印:

测试斜体等等。
更多测试

但是,我想要这样的东西:

测试斜体等等。

更多测试

所以我不得不将第二段包装在一个 div 中(并且除了第一段之外的所有段落都可以包装)。

<p>Testing <i>italic</i> and something more.</p>
<div><p>More testing </p></div>

If you wrap the first paragraph then you will have an extra new line.

So far this is the best solution I have found. If you find better I apreciate it since I am testing and learning. If you find a better solution I will accept yours.

Be carefull

This approach will crash if you have symbols like "<" or "&" in your html. I suggest that you replace those chars before you try to use this library.

于 2012-12-06T12:19:34.103 回答