Вы можете использовать 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 , который в значительной степени реализует преобразование тегов, и, возможно, вы сможете просто скопировать и вставить конвертер в свой проект и начать работу.