Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 2 Min.

Kostenloses Syntax Highlighting mit AvalonEdit

Die zentrale Textbox von SharpDevelop steht auch für andere WPF-Projekte zur Verfügung.
Wer Textabschnitte in einem Eingabefeld markiert darstellen will, muss unter WPF auf die RichtTextBox zurückgreifen. Mit ihr lassen sich über TextRange-Objekte ausgewählte Passagen formatieren, also in Schriftart, Farbe oder Hintergrund anpassen.Allerdings ist das ein steiniger Weg, der noch viel beschwerlicher wird, wenn es nicht nur um das Hervorheben einzelner Wörter geht, sondern das Formatieren eines Quelltextes. Dann müssen Schlüsselwörter eingefärbt, Kommentare ausgegraut oder Strings fett hervorgehoben werden.AvalonEdit ist genau für diesen Zweck konzipiert worden (NuGet Package). Es handelt sich dabei um das zentrale Editierfeld des Open-Source-Projekts SharpDevelop - eine Entwicklungsumgebung für .NET.AvalonEdit ist ein WPF-Control, dass Syntax Highlighting schon eingebaut hat. Als Entwickler kann man mit einer sogenannten XSHD-Datei das Syntax Highlighting konfigurieren. Das sind XML-Dateien, die Regeln und Formatierungen festlegen. Eine XSHD-Datei für die Formatierung von C#-Code findet sich beispielsweise auf GitHub.Hier ein Ausschnitt aus dieser Datei:
 @" " span for escape sequences    
Die Regel im Span-Abschnitt legt fest, wann es sich bei dem Text um einen String handelt. Das Attribut multiline="true" teilt AvalonEdit mit, dass so ein String auch über mehrere Zeilen gehen kann. Wie das Ganze dann aussehen soll, steht im Tag Color.Der folgender Code lädt die XSHD-Datei CustomHighlighting.xshd in AvalonEdit.
using (Stream xshd_stream = File.OpenRead("CustomHighlighting.xshd")) { XmlTextReader xshd_reader = new XmlTextReader(xshd_stream); IHighlightingDefinition hd = ICSharpCode.AvalonEdit.Highlighting.Xshd.HighlightingLoader. Load(xshd_reader, ICSharpCode.AvalonEdit.Highlighting.HighlightingManager.Instance); textEditor.SyntaxHighlighting = hd; xshd_reader.Close(); xshd_stream.Close(); } 
Einziger Nachteil von AvalonEdit besteht darin, dass die Text-Eigenschaft kein Dependency Property ist. Sie lässt sich also nicht so einfach in einem MVVM-Szenario anbinden. [tib]
Miscellaneous

Neueste Beiträge

Nest.js: Warum sich der Blick über den Tellerrand für .NET-Entwickler lohnt - Nest.js für .NET-Entwickler, Teil 1
In modernen Softwareprojekten steht das C#-Backend längst neben einem Frontend, das in TypeScript lebt. Zwei Sprachen, zwei Ökosysteme, zwei Denkweisen. Was, wenn das Backend dieselbe Sprache sprechen könnte – ohne auf Enterprise-Patterns zu verzichten? Nest.js zeigt, dass genau das geht.
6 Minuten
18. Feb 2026
Commands in SignalRC - Der DDC-Truck, Teil 5
Durch das Zusammenspiel verschiedener Entwicklungsmuster lassen sich interessante Verhaltensweisen für die Steuerung von RC-Modellen aufbauen.
8 Minuten
19. Feb 2026
Die ganze Welt der Softwareentwicklung
Ein riesiges Angebot an Wissen, das von Expert:innen lebendig vermittelt wird, gewürzt mit Kontakt zu Gleichdenkenden – das ist der Kern der DWX.
6 Minuten
19. Feb 2026

Das könnte Dich auch interessieren

Elektronische Schaltkreise im Browser simulieren - Simulation
Statt mit Steckfeld oder Lötkolben kann man auf dieser Website Schaltungen per Drag and Drop zusammenstellen und deren Verhalten testen.
2 Minuten
26. Jul 2018
SignalRC – in Echtzeit ans Steuer - Der DDC-Truck: Auf in die Welt mit SignalR, Raspberry Pi und sechs Rädern
Ein vernetztes Fahrzeug, gesteuert per Weboberfläche und LTE. SignalR sorgt dabei für millisekundenschnelle Kommunikation – direkt, stabil und skalierbar.
16 Minuten
21. Jan 2026
Version 30 von List & Label mit neuen Cloud-Funktionen - Reportgenerator
Die neue Version des Reporting-Tools List & Label unterstützt Entwickler:innen mit neuen Features, die speziell für Cloud- und Webumgebungen konzipiert sind.
2 Minuten
21. Okt 2024
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige