目前我正在尝试进入Windows应用商店应用开发,而且我已经陷入困境。
我想实现一种类似于stackoverflow的“降价语言”,以突出显示文本输入的某些部分。
除此之外,我想让用户能够在他的文本上使用不同的字体颜色。
RichEditBox似乎是完成此任务的理想控件,但我不知道如何检测即时进入的标记。
例如,当用户输入**Test**
时,文本应立即转换为测试。
我试图通过收听“TextChanged”事件并查看用户是否输入**
来解决此问题。如果是这种情况,并且如果他之前已经输入过序列**
,那么我将设置文本范围的字符格式,从第一个注释序列的末尾(开始标记)到开头的第二个(关闭标记)注释为粗体。
但这种解决方案似乎非常快速和肮脏。
我的第二个想法是使用“Markdown Sharp”预处理后使用WebView控件渲染文本。 但是,用户将无法编辑文本。
所以我需要得到一些建议或提示解决这个问题。我还考虑编写一个自定义的RichEditBox控件,但我没有自定义控件开发的经验,而且目前用于Windows 8开发的Web上没有那么多资源。
提前致谢。
答案 0 :(得分:0)
正如我所看到的,您的问题是您想要根据Markdown语法编辑“源”并在同一位置显示格式化结果。只要星号消失,您如何将测试恢复为常规?如果答案是“使用按钮”,那么为什么不在第一时间使用按钮使其变为粗体?
但是,你可以做一个混合的事情:在源文本中应用格式,同时保持Markdown标记(不确定这是否完全适用于所有Markdown技巧)。也就是说,**Test**
会在源代码中看到 **Test**
。对于最终的格式化结果,您将使用单独的视图,例如RichTextBlock。
为了进行混合格式化,一个选项是让后台线程定期匹配整个文本与特定于Markdown语法的正则表达式。对于每个匹配,相应的文本范围将相应地格式化。