Слегка стилизованная текстовая библиотека для WPF? - PullRequest
3 голосов
/ 16 июля 2010

Кто-нибудь знает о слегка маркированной библиотеке форматирования текста в стилизованный текст (например, что-то вроде Markdown # или Textile.NET), но которая создает собственный документ XAML (или, скорее, модель FlowDocument или аналогичную)?это может быть отображено непосредственно в приложении WPF), чтобы избежать использования веб-браузера?

Бонусные баллы за что-то легкое.Я надеюсь на то, что будет допускать очень частые обновления исходного текста.

В качестве альтернативы, есть ли легкий элемент управления рендерингом HTML, который можно использовать в WPF?(Я не считаю стандартный WebBrowser легким.)

1 Ответ

1 голос
/ 16 июля 2010

Я не знаю такой библиотеки, но у меня есть кое-какие мысли для вас.

Первый большой вопрос, который у меня возникает, заключается в том, почему вы хотите использовать что-то примитивное, такое как Markdown, когда вы можете использовать RichTextBox. Уценка требуется для StackOverflow и подобных сайтов из-за ограничений браузера. Но если ваше приложение WPF, это не проблема.

Одно из предположений о том, почему вы можете захотеть сделать это, заключается в том, что вы хотите, чтобы ваши документы были редактируемыми как в WPF, так и в веб-приложении с наименьшим общим знаменателем. В этом случае вам понадобится механизм, который все равно отображает уценку в HTML, так почему бы не использовать этот же механизм для преобразования уценки в XAML?

Преобразование произвольного HTML в XAML очень сложно, но преобразование вида HTML, который выполнил бы конвертер Markdown, - это совсем другой вопрос. Большинство конверторов в стиле Markdown выделяют только несколько простых HTML-тегов, каждый из которых легко конвертируется в эквивалентный XAML.

Если вы используете конвертер Markdown-to-HTML, он сделает все для вас очень тяжелым (анализ текста и т. Д.) И предоставит вам XML-подобный документ (точнее, HTML), который относительно легко разобрать. Кроме того, если вы используете конвертер Markdown-to-HTML в другом месте, вы будете уверены, что ваш синтаксический анализатор Markdown проанализирует ваш синтаксис Markdown точно так же, как для HTML, так и для XAML, поскольку он будет одинаковым в каждом случае.

Итак, в основном я думаю:

string html = MarkdownEngine.MarkdownToHtml(markdown);
string xaml = MarkdownHtmlToXamlTranslator.HtmlToXaml(html);

Где вы разрабатываете свою реализацию MarkdownHtmlToXamlTranslator вокруг того, что фактически выдает механизм уценки. Это может быть очень простой XSLT, или вы можете использовать LINQ to XML вместе с методами построения XDocument. В любом случае это должен быть очень маленький кусочек кода.

...