我从Windows 8开始,正在尝试将HTML转换为RichTextBlock
。
我have read可以使用此功能:HtmlUtilities.ConvertToText
中的TextBlock
,但是我找不到在RichTextBlock
中使用此功能的方法!
根据我的理解和尝试,I can't extend是RichTextBlock
,因此我无法在每次调用RichTextBlock
时都应用此功能。
另外,我找不到任何仅将简单的HTML文本绑定(bind)到RichTextBlock
和building a parser的方法(我只想要段落和斜体/粗体)似乎是一个过大的选择。另外,由于RichTextBlock
似乎不可扩展,所以我也不知道应该在哪里进行此解析。
我不能使用WebView
,因为需要透明性(从我读过的WebView doesn't have it来看)。
编辑
@mydogisbox让我看到我的研究范围太广了。
我可以在可以绑定(bind)到HtmlUtilities.ConvertToText
的属性的getter中使用RichTextBlock
。我无法绑定(bind)它,因为我正在尝试做
没有<Run Text="{Binding TextHTML}" />
标记的<Paragraph>
。
但是HtmlUtilities.ConvertToText
不会保留斜体或粗体。仅段落:/。
最佳答案
我最终使用了package avaiable on gitHub,它可以将HTML转换为RickTextBlock。
基本上,您只需要打开Package Manager控制台(工具> Library Package Manager> Package Manager控制台)和运行Install-Package RichTextBlock.Html2Xaml
的install the package即可。
然后,打开RichTextBlockProperties.cs,然后找到需要复制的行。在我的情况下,我必须添加 namespace :
xmlns:rtbx="using:EventTests.Common"
然后,您可以使用以下方法绑定(bind)具有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中有诸如“
关于html - 将简单的HTML转换为RichTextBlock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13729540/