1

我目前正在开发 Windows 10 UWP 项目。我从服务器获取一个 HTML 文件,我想在 UWP 应用程序中显示它。我想使用 RichTextBlock 而不是 Web 视图。我在这里尝试了使用 Html2Xaml 库的 github 代码,但是当我尝试绑定数据时出现错误到 RichTextBlock。我找到了这个,但它只包含将 rtf 转换为 html

我只是想将 html 转换为 RichTextBlock 并在 UWP 应用程序中显示 html 文件。请有人建议如何使用 RichTextBlock 实现我的要求

4

1 回答 1

1

显示Html的最好方法是使用WebView,但是如果你想将它转换成RichTextBlock可以显示的文本,这可能会更复杂。

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

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

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

2.解析Html文档,递归生成对应的BlockInline基于标签类型

递归方法是检查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;
}

支持的文本类型RichTextBlockWindows.UI.Xaml.Documents命名空间下,主要分为InlineBlock。如果要查看此命名空间中的所有文本类型,可以查看此文档


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

如果您打算完成这项出色的工作,我希望我的建议可以帮助您。

此致。

于 2020-02-07T01:13:04.953 回答