代码之家  ›  专栏  ›  技术社区  ›  Miral

为WPF设计的轻样式文本库?

  •  3
  • Miral  · 技术社区  · 14 年前

    是否有人知道样式化文本格式库(例如markdown或failure.net)中的轻标记文本,但它生成本地XAML文档(或者更确切地说,可以直接在WPF应用程序中显示的流文档模型或类似模型),以避免使用WebBrowser?

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

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Ray Burns    14 年前

    我不知道这样一个预建的图书馆,但我确实有一些想法对你有帮助。

    我想的第一个大问题是,当你可以使用richtextbox时,为什么要使用诸如markdown之类的原始元素。由于浏览器的限制,StackOverflow和类似网站需要降价。但如果你的应用是WPF,这不是问题。

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

    将任意HTML转换为XAML是非常困难的,但是将markdown转换器所吐出的HTML类型转换完全是另一回事。大多数标记样式的转换器只输出几个简单的HTML标记,所有这些标记都可以转换为等效的XAML。

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

    所以基本上我想的是:

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

    在这里,您设计了markdownthmltoxamltranslator的实现,围绕着markdown引擎实际输出的内容。它可以是一个非常简单的XSLT,也可以将LINQ-to-XML与xdocument构造技术一起使用。不管怎样,它都应该是一小段代码。

    推荐文章