WPF的简洁文本库?

时间:2010-07-16 00:22:42

标签: c# wpf markdown flowdocument textile

有没有人知道带样式文本格式库的文本格式轻微(即像Markdown#或Textile.NET这样的东西),但会生成原生XAML文档(或者更确切地说,是FlowDocument模型或类似文档)可以直接在WPF应用程序中显示,以避免使用WebBrowser?

轻量级的奖励积分。我希望能够容忍源文本中非常频繁的更新。

或者,是否有可以在WPF中使用的轻量级HTML呈现控件? (我不认为标准WebBrowser是轻量级的。)

1 个答案:

答案 0 :(得分:1)

我不知道预先建立了这样的图书馆,但我确实对你有一些想法可能有所帮助。

我脑海中的第一个重要问题是,当您使用RichTextBox时,为什么要使用像Markdown这样的原始内容。由于浏览器的限制,StackOverflow和类似网站需要Markdown。但如果你的应用程序是WPF,这不是问题。

您可能想要这样做的一个猜测是,您希望您的文档可以在WPF和最低公分母Web应用程序中进行编辑。在这种情况下,你需要一个引导降价为HTML的引擎,那么为什么不利用相同的引擎将降价转换为XAML呢?

将任意HTML转换为XAML非常困难,但转换Markdown转换器吐出的HTML类型完全是另一回事。大多数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构造技术。无论哪种方式,它应该是一小段代码。