html - 如何使用来自 UWP 应用的 XAML 在 TextBlock 中显示 HTML 内容?
问题描述
在 JSON 响应中:
results = "<p>This is a <b>paragraph</b></p><p>New paragraph with symbols > tags</p>";
XAML:
<Textblock Text={Binding results}/>
结果:
This is a **paragraph** New Word
New paragraph with symbols > tags
解决方案
您可以使用RichTextBlock
XAML 输出更轻松地匹配 HTML DOM。不幸的是,没有内置的 API 可以将 HTML 转换为控件的等效 XAML。
您可以使用手动将 HTML 解析为已知标签HtmlAgilityPack
并添加项目。RichTextBlock.Inlines
有一篇关于这个过程的旧文档文章,但它仍然适用。它显示的示例之一:
private static Inline GenerateBlockForNode(HtmlNode node)
{
switch (node.Name)
{
case "div":
return GenerateSpan(node);
case "p":
case "P":
return GenerateInnerParagraph(node);
case "img":
case "IMG":
return GenerateImage(node);
...
然后各个GenerateXXX
方法生成适当的内联:
private static Inline GenerateSpan(HtmlNode node)
{
Span s = new Span();
AddChildren(s, node);
return s;
}
最简单的解决方案是使用这个 GitHub repo中的代码,它实现了很多标签转换,也许您可以将转换器复制粘贴到您的项目并开始运行。
推荐阅读
- .net - nginx 入口控制器日志 499
- php - Cloudinary上传php失败,如何解决?
- trimble-maps - Trimble MAPS API 缩放正在影响整个网页
- laravel-5 - Laravel 多对多附加?
- sql - SQL Server:SUM 数值,但保留字符串不变
- angular - 打字稿更新后构建失败
- javascript - 如何防止 webpack 在 eslint 错误上构建失败?
- php - 数据透视表选择 LARAVEL
- swift - Foundation - 什么是区域设置的 collatorIdentifier?
- spring-boot - 如何在 cpanel 上托管 Spring Boot 应用程序?