显示Html的最好方法是使用WebView
,但是如果你想将它转换成RichTextBlock
可以显示的文本,这可能会更复杂。
让我简单解释一下这个想法:
1.加载Html并将其变成可解析的实体。
在nuget包管理器中,可以找到一些相关的Html解析包,搜索Html
下载最流行的包。
2.解析Html文档,递归生成对应的Block
或Inline
基于标签类型
递归方法是检查Tag
当前正在解析的是否有子节点,如果有,则重复解析方法。
3.编写各种标签的转换方法
RichTextBlock
不能根据Html标签转换成对应的样式文本,所以这个需要自己写。
举<b> ... </b>
个例子,这是一个粗体的内联文本。转换时可以使用此方法:
private static Inline GenerateBold(HtmlNode node)
{
if (string.IsNullOrEmpty(node.InnerText.Trim()))
return null;
Span s = new Span();
s.Inlines.Add(new Run() { Text = node.InnerText.Trim(), FontWeight = FontWeights.Bold });
return s;
}
支持的文本类型RichTextBlock
在Windows.UI.Xaml.Documents
命名空间下,主要分为Inline
和Block
。如果要查看此命名空间中的所有文本类型,可以查看此文档
将 Html 标签转换为 支持的文本类型RichTextBlock
需要一对一的转换。此外,您可能无法完全重现 CSS 对样式的影响RichTextBlock
(这意味着您还需要构建一个 CSS 解析器)。
如果您打算完成这项出色的工作,我希望我的建议可以帮助您。
此致。