0

此刻我正在尝试进入Windows应用商店应用开发,并且我在某个时间点被卡住了。 我想实现一种类似于“stackdownflow”的“降格语言”,以突出显示文本输入的某些部分。 除此之外,我想让用户能够在他的文本上使用不同的字体颜色。 RichEditBox似乎是这个任务的理想控件,但我不知道如何检测即时输入的标记。 例如,当用户输入**Test**时,文本应立即转换为测试Windows-Store-App RichEditBox降价突出显示

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

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

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

所以我需要得到一些建议或提示解决这个问题。我也研究过编写一个定制的RichEditBox控件,但是我没有自定义控件开发的经验,而且现在网上没有很多资源用于Windows 8开发。

在此先感谢。

回答

0

正如我所看到的,您的问题是您要编辑基于Markdown语法的“源”并在同一位置显示格式化结果。只要星号不见了,你会如何回复测试到正常状态?如果答案是“使用按钮”,那么为什么不使用按钮使它在第一位加粗呢?

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

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

+0

难道你不能看光标位置,并且如果它落在粗体字**测试**的范围内,你可以用\ * \ * Test替换它* * \ * – roryok