3

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

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

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

4

1 回答 1

1

我不知道这样一个预先构建的库,但我确实对您有一些想法可能会有所帮助。

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

关于您为什么要这样做的一个猜测是,您希望您的文档在 WPF 和最小公分母 Web 应用程序中都可以编辑。在这种情况下,您将需要一个能够将 markdown 呈现为 HTML 的引擎,那么为什么不利用相同的引擎将 markdown 转换为 XAML?

将任意 HTML 转换为 XAML 非常困难,但转换 Markdown 转换器会输出的那种 HTML 则完全是另一回事。大多数 Markdown 风格的转换器只输出几个简单的 HTML 标记,所有这些都可以轻松转换为等效的 XAML。

如果您使用 Markdown-to-HTML 转换器,它将为您完成所有真正繁重的工作(解析文本等),并为您留下一个相对容易解析的类似 XML 的文档(准确地说是 HTML) . 此外,如果您在其他地方使用 Markdown 到 HTML 转换器,您将确信您的 Markdown 解析器将解析您的 Markdown 语法对于 HTML 和 XAML 使用完全相同,因为它在每种情况下都是相同的解析器。

所以基本上我在想的是:

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

您在哪里设计 MarkdownHtmlToXamlTranslator 的实现,无论降价引擎实际吐出什么。它可以是一个非常简单的 XSLT,或者您可以使用 LINQ to XML 以及 XDocument 构造技术。无论哪种方式,它都应该是一小段代码。

于 2010-07-16T07:39:39.810 回答