wpf - WPFToolkit RichTextBox-键入时更新文本颜色

标签 wpf mvvm richtextbox wpftoolkit

我正在使用WPFToolkit RichTextBox,以允许用户查看和编辑文本。
我需要支持的一件事是在键入特定单词时以及从预先存在的源中加载特定单词时为其着色。

例如,如果用户键入单词“Hello”,则应将其涂成蓝色。

由于我使用的是MVVM,因此我希望尽可能避免后面的代码。

到目前为止,我一直在尝试使用自定义TextFormatter在ViewModel中处理此问题,但是仅当我更新source属性并且直接更新RichTextBox时,它才起作用,因为TextFormatter的SetText甚至都没有被调用,所以它什么也没有着色。仅调用SetText。

我希望你们能帮助我。

谢谢!

最佳答案

最后,我使用了在这里找到的解决方案-
http://blogs.microsoft.co.il/blogs/tamir/archive/2006/12/14/RichTextBox-syntax-highlighting.aspx

它正在执行其工作,但是在快速键入或按住退格键时有时会出现一些小问题。

因此,由于我的RichTextBox相对较小,因此它现在已经足够好了。

尽管如果有人知道如何解决打ic的问题,那将真的很棒!

编辑:我找到了一种方法来真正改善打ic。我使用了DispatcherTimer并在TextChanged事件上将其启动,这样只有一秒钟/半秒之后,它才会启动着色逻辑。到目前为止,它的运行速度要快得多,而且快速键入时我没有发现任何问题。因此,对于我需要用彩色文字进行单行显示的方式,似乎很有效!

关于wpf - WPFToolkit RichTextBox-键入时更新文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783470/

相关文章:

c# - WPF 自定义控件 - 未应用 ItemsControl 模板

WPF MVVM 确定模型何时更改集合中的项目

android - 如何在 2020/21 年获得 Activity 中的 ViewModel 实例?

c# - 如何提供 "object"并将其传递给 viewmodelbase?

c# - 在禁用滚动条的RichTextBox中获取滚动条 'position'

c# - 如果任何控件已更改 WPF,则引发事件

c# - 使用数组变量绑定(bind)对象

xaml - Windows 8.1 : Behaviors on Flyouts don't Work

c# - WPF richTextBox问题

c# - 在流程文档的新创建段落上设置插入符号位置