如何使用 RichTextBlock 显示 html 格式

How to show html format using RichTextBlock

我目前正在处理 Windows 10 UWP 项目。我从服务器获取了一个 HTML 文件,我想在 UWP 中显示这个 app.I 想使用 RichTextBlock 而不是 web view.I 尝试了 github 代码 here which has used Html2Xaml library but I'm getting error when I try to bind data to RichTextBlock.I found 但是它只包含将 rtf 转换为 html

我只是想将 html 转换为 RichTextBlock 并在 UWP app.Please 中显示 html 文件,有人建议如何使用 RichTextBlock

显示Html的最佳方式是使用WebView,但是如果要将其转换成RichTextBlock可以显示的文字,这可能会比较复杂。

让我简单解释一下这个想法:

1.加载 Html 并将其变成可解析的实体。

在nuget包管理器中,可以找到一些相关的Html解析包,搜索Html下载最流行的包。

2。解析Html文档,根据标签类型递归

生成对应的BlockInline

递归的方法是检查当前正在解析的Tag是否有children,如果有则重复解析方法

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命名空间下,主要分为InlineBlock。如果想查看这个命名空间下所有的文本类型,可以查看这个document


将 Html 标签转换为 RichTextBlock 支持的文本类型需要 one-to-one 转换。此外,您可能无法完全重现 CSS 对 RichTextBlock 样式的影响(这意味着您还需要构建一个 CSS 解析器)。

如果你要做好这项工作,希望我的建议能对你有所帮助。

此致。