Windows-Store-App RichEditBox Markdown突出显示

时间:2012-11-06 11:51:22

标签: c# microsoft-metro markdown rich-text-editor windows-store-apps

目前我正在尝试进入Windows应用商店应用开发,而且我已经陷入困境。 我想实现一种类似于stackoverflow的“降价语言”,以突出显示文本输入的某些部分。 除此之外,我想让用户能够在他的文本上使用不同的字体颜色。 RichEditBox似乎是完成此任务的理想控件,但我不知道如何检测即时进入的标记。 例如,当用户输入**Test**时,文本应立即转换为测试

我试图通过收听“TextChanged”事件并查看用户是否输入**来解决此问题。如果是这种情况,并且如果他之前已经输入过序列**,那么我将设置文本范围的字符格式,从第一个注释序列的末尾(开始标记)到开头的第二个(关闭标记)注释为粗体。

但这种解决方案似乎非常快速和肮脏。

我的第二个想法是使用“Markdown Sharp”预处理后使用WebView控件渲染文本。 但是,用户将无法编辑文本。

所以我需要得到一些建议或提示解决这个问题。我还考虑编写一个自定义的RichEditBox控件,但我没有自定义控件开发的经验,而且目前用于Windows 8开发的Web上没有那么多资源。

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如我所看到的,您的问题是您想要根据Markdown语法编辑“源”并在同一位置显示格式化结果。只要星号消失,您如何将测试恢复为常规?如果答案是“使用按钮”,那么为什么不在第一时间使用按钮使其变为粗体?

但是,你可以做一个混合的事情:在源文本中应用格式,同时保持Markdown标记(不确定这是否完全适用于所有Markdown技巧)。也就是说,**Test**会在源代码中看到 **Test** 。对于最终的格式化结果,您将使用单独的视图,例如RichTextBlock。

为了进行混合格式化,一个选项是让后台线程定期匹配整个文本与特定于Markdown语法的正则表达式。对于每个匹配,相应的文本范围将相应地格式化。