Как показать HTML контент в TextBlock, используя XAML из приложения UWP? - PullRequest
0 голосов
/ 01 апреля 2020

В JSON ответ:

results =  "<p>This is a <b>paragraph</b></p><p>New paragraph with symbols &gt; tags</p>";

XAML:

<Textblock  Text={Binding results}/>

результат:

This is a **paragraph** New Word
New paragraph with symbols > tags

1 Ответ

1 голос
/ 01 апреля 2020

Вы можете использовать RichTextBlock для более простого сопоставления HTML DOM с выходом XAML. К сожалению, нет встроенного API, который преобразует HTML в эквивалентный XAML для элемента управления.

Вы можете проанализировать HTML в известные теги, используя HtmlAgilityPack, и добавить элементы в RichTextBlock.Inlines вручную , Об этом процессе есть старая Docs статья , но она все еще применяется. Один из примеров, который он показывает:

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;
}

Самым простым решением было бы использовать код в this GitHub repo , который в значительной степени реализует преобразование тегов, и, возможно, вы сможете просто скопировать и вставить конвертер в свой проект и начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...