I’m using the WPFToolkit RichTextBox in order to allow the user to view and edit text.
One of the things I need to support is the coloring of specific words as they are being typed, as well as when loading them from an pre-existing source.
For example if the user type the word – “Hello” it should be colored in blue.
Since I’m using MVVM I would like to avoid code behind as much as possible.
So far I’ve been trying handling this in the ViewModel with a custom TextFormatter however it helped only when the I update the source property and when I updated the RichTextBox directly it didn’t color anything as the TextFormatter’s SetText wasn’t even called. Only SetText was called.
I hope you guys could help me out.
Thanks!
In the end I used the solution I found in here –
http://blogs.microsoft.co.il/blogs/tamir/archive/2006/12/14/RichTextBox-syntax-highlighting.aspx
It’s doing its job, but it sometimes has minor hiccups when typing fast or when holding the backspace.
So for now its good enough since my RichTextBox is relatively small.
Though if anyone knows how to fix the hiccups, it would be really great!
EDIT: I found a way to really improve the hiccups. I used a DispatcherTimer and started it on the TextChanged event, that way only after a second/half a second, it would start the coloring logic. So far it works much faster, and I didn’t notice any problems when typing quickly. So for my needs of a single row with colored words, it seems like it worked!