我正在使用WPFToolkit RichTextBox以允许用户查看和编辑文本。 我需要支持的一件事是在键入特定单词时对其进行着色,以及从预先存在的来源加载它们时。
例如,如果用户输入单词 - “Hello”,则应将其涂成蓝色。
由于我使用的是MVVM,我希望尽可能避免使用代码。
到目前为止,我一直在尝试使用自定义TextFormatter在ViewModel中处理它,但是只有在我更新源属性时才有帮助,当我直接更新RichTextBox时它没有任何颜色,因为TextFormatter的SetText不是甚至叫。只调用了SetText。
我希望你们能帮助我。
谢谢!
答案 0 :(得分:4)
最后我使用了我在这里找到的解决方案 - http://blogs.microsoft.co.il/blogs/tamir/archive/2006/12/14/RichTextBox-syntax-highlighting.aspx
它正在完成它的工作,但在快速键入或保持退格时有时会出现轻微的打嗝。
所以现在它已经足够好了,因为我的RichTextBox相对较小。
虽然如果有人知道如何解决打嗝问题,那真的很棒!
编辑:我找到了一种真正改善打嗝的方法。我使用DispatcherTimer并在TextChanged事件上启动它,这样只有在一秒钟/秒后,它才会启动着色逻辑。到目前为止它的工作速度要快得多,而且在快速输入时我没有注意到任何问题。因此,对于我需要单行的彩色单词,它似乎有效!