Apply Syntax Highlighting in a Text Control
<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
Related examples in the same category