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

HMAC mit C# und T-SQL - Neues in SQL Server 2025, Teil 3
Kompatible Signaturberechnung über Systemgrenzen hinweg.
4 Minuten
20. Mai 2026
JSON mit T-SQL auswerten - Neues in SQL Server 2025, Teil 2
Die JSON-Unterstützung in SQL Server 2025 erweitert das relationale Modell um die direkte Verarbeitung dokumentbasierter Daten.
6 Minuten
13. Mai 2026
Was Developer in Europa wirklich wollen – und was sie nervt - European Transparent IT Job Market Report
Über 23.000 Stellenanzeigen, mehr als 1.300 befragte IT-Fachleute, sechs europäische Länder: Der Job-Market-Report liefert handfeste Zahlen zu Gehältern, Recruiting-Frust und dem wachsenden Einfluss von KI auf den Arbeitsalltag. Was Developer wirklich wollen – und wo Unternehmen noch deutlich Luft nach oben haben.
3 Minuten
19. Mai 2026

Das könnte Dich auch interessieren

Python in .NET – Integration mit Python.NET - .NET, Python und KI, Teil 1
Python-Code lässt sich in .NET-Anwendungen mit dem Open-Source-Projekt Python.NET einbinden. Wir erklären die Installation und grundlegende Interop-Szenarien. Ein einfaches Beispiel veranschaulicht die Praxis.
6 Minuten
Maschinelles Lernen in .NET - .NET, Python und KI, Teil 2
Für eine performante und plattformübergreifende Inferenz von NET-Projekten empfiehlt sich eine hybride Strategie aus Training oder Prototyping in Scikit-Learn/Python, Export nach ONNX und Einbindung in .NET über ML.NET oder ONNX Runtime.
7 Minuten
00:00
Bluetooth, Biometrie und Multiplattform: Was .NET MAUI Hybrid wirklich kann - Die Möglichkeiten von .NET MAUI Blazor Hybrid verstehen
Codrina Merigo baut mit .NET MAUI Blazor Hybrid Apps für Android, iOS, macOS und Windows – und nutzt dafür das, was Web-Entwickler:innen sowieso schon können. Im Interview im Vorfeld der DWX 2026 erklärt sie, wie das geht, wo's hakt und warum das Framework im Enterprise-Umfeld eine ernste Option ist.
28. Apr 2026
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige