1

目前我正试图进入 Windows 商店应用程序开发,但我被困在某个时刻。我想实现一种“markdown 语言”,就像 stackoverflow 上的那样,以突出显示文本输入的某些部分。除此之外,我想让用户能够在他的文本上使用不同的字体颜色。RichEditBox 似乎是此任务的理想控件,但我不知道如何检测动态输入的标记。例如,当用户输入**Test**文本时,应立即将其转换为Test

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

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

我的第二个想法是使用 WebView 控件在使用“Markdown Sharp”对其进行预处理后呈现文本。但随后用户将无法编辑文本。

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

提前致谢。

4

1 回答 1

1

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

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

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

于 2013-02-14T14:49:09.197 回答