将简单的HTML转换为RichTextBlock
我开始使用Windows 8,并试图将HTML转换为RichTextBlock
。
我已经读过,我可以使用这个函数: TextBlock
HtmlUtilities.ConvertToText
,但我找不到在RichTextBlock
使用此函数的方法!
从我的理解和尝试,我无法扩展RichTextBlock
所以每次调用RichTextBlock
都无法应用此函数。
此外,我找不到任何方法将文本绑定到RichTextBlock
并为简单的HTML构建解析器(我只想要段落和斜体/粗体)看起来是一种矫枉过正。 此外,我不知道我应该在哪里解析,因为我的RichTextBlock
似乎无法扩展。
我无法使用WebView
因为我需要透明度(并且从我读过的WebView中没有它)。
编辑
@mydogisbox让我看到我的研究太过分了。
我可以在可以绑定到RichTextBlock
的属性的getter中使用HtmlUtilities.ConvertToText
。 我无法绑定它,因为我试图在没有<Paragraph>
标记的情况下执行<Run Text="{Binding TextHTML}" />
。
但是, HtmlUtilities.ConvertToText
不保留斜体或粗体。 只有段落:/。
我最终在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>
如果你包装第一段,那么你将有一个额外的新行。
到目前为止,这是我找到的最佳解决方案。 如果你觉得更好,我会在测试和学习之后加以补充。 如果你找到更好的解决方案,我会接受你的。
小心点
如果你的html中有符号“<”或“&”,这种方法会崩溃。 我建议你在尝试使用这个库之前替换这些字符。
链接地址: http://www.djcxy.com/p/11545.html