Tia*_*ida 7 html wpf xaml windows-8 richtextblock
我从Windows 8开始,我正在尝试将HTML转换为RichTextBlock.
我已经读过我可以使用这个函数:   HtmlUtilities.ConvertToText在一个TextBlock但是我找不到一种方法来使用这个函数RichTextBlock!
根据我的理解和尝试,我无法扩展,RichTextBlock所以我无法在每次RichTextBlock调用时应用此函数.
另外,我找不到任何方法将文本绑定到a RichTextBlock并为简单的HTML 构建解析器(我只想要段落和斜体/粗体)似乎有点矫枉过正.此外,我不知道我应该在哪里解析,因为我RichTextBlock似乎无法容忍.
我不能使用,WebView因为我需要透明度(从我读过的WebView没有它).
编辑
@mydogisbox让我看到我对我的研究走得太远了.
我可以HtmlUtilities.ConvertToText在getter中使用我可以绑定的属性RichTextBlock.我无法绑定它,因为我试图 
                     <Run Text="{Binding TextHTML}" />没有<Paragraph>标签.
但是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 中有“<”或“&”等符号,这种方法将会崩溃。我建议您在尝试使用此库之前替换这些字符。
| 归档时间: | 
 | 
| 查看次数: | 3969 次 | 
| 最近记录: |