Add / Remove TextChanged event for RichTextBox
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="600" Width="800"> <Grid> <RichTextBox x:Name="rtbTextContent" TextChanged="RichTextBox_TextChanged" /> </Grid> </Window> //File:Window.xaml.vb Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Documents Imports System.Windows.Media Namespace WpfApplication1 Public Partial Class Window1 Inherits Window Public Sub New() InitializeComponent() End Sub Private Sub RichTextBox_TextChanged(sender As Object, e As TextChangedEventArgs) Dim textRange As New TextRange(rtbTextContent.Document.ContentStart, rtbTextContent.Document.ContentEnd) RemoveHandler rtbTextContent.TextChanged, AddressOf RichTextBox_TextChanged textRange.ClearAllProperties() ApplyFormatting() AddHandler rtbTextContent.TextChanged, AddressOf RichTextBox_TextChanged End Sub Private Sub ApplyFormatting() Dim tp As TextPointer = rtbTextContent.Document.ContentStart tp = FindNextString(tp) Dim textRangeEnd As TextPointer = tp.GetPositionAtOffset(1, LogicalDirection.Forward) Dim tokenTextRange As New TextRange(tp, tp.GetPositionAtOffset(1, LogicalDirection.Forward)) tokenTextRange.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue) End Sub Private Function FindNextString(tp As TextPointer) As TextPointer Dim buffer As Char() = New Char(0) {} tp.GetTextInRun(LogicalDirection.Forward, buffer, 0, 1) Return tp End Function End Class End Namespace