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

Interaktive Planung und integrierte AI-Code-Reviews mit Cursor - Die KI-IDE Cursor in der Praxis, Teil 1
Cursor kombiniert den Plan-Modus mit integrierten AI-Code-Reviews und verbindet so Planung mit Umsetzung und Qualitätssicherung in einem interaktiven Entwicklungsworkflow.
8 Minuten
3. Jun 2026
Agenten-zentriertes und paralleles Arbeiten mit Cursor - Die KI-IDE Cursor in der Praxis, Teil 2
KI-gestützte Agenten erarbeiten in Cursor eigenständig Lösungsansätze für die Umsetzung von Aufgaben. Dabei können Entwickler mehrere Agenten parallel anstoßen und dennoch die Kontrolle über deren Vorschläge und Änderungen behalten.
7 Minuten
10. Jun 2026
Warum moderne Anwendungen neue Messmethoden brauchen - Real User Monitoring im Wandel
Die Kombination aus Real User Monitoring und einer umfassenden Observability-Strategie ermöglicht es, Frontend-Interaktionen mit den zugrunde liegenden Systemprozessen zu verknüpfen. KI-gestützte Observability hilft dabei, die Telemetriedaten auszuwerten und komplexe Zusammenhänge sichtbar zu machen.
6 Minuten

Das könnte Dich auch interessieren

00:00
C# 14, Blazor und die Desktop-Frage - Was sind die Killer Features der aktuellen Versionen?
C# 14 bringt echte Verbesserungen für den Entwickleralltag – aber nicht jedes neue Feature ist ein Game Changer. Microsoft MVP Thomas-Claudius Huber sortiert, was in der Praxis zählt, erklärt, wann Blazor React schlägt, und warum WPF noch lange nicht zum alten Eisen gehört.
19. Mai 2026
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
Vom Python-Modell zur .NET-Anwendung - .NET, Python und KI, Teil 4
Am Szenario einer Sentiment-Analyse verdeutlicht ein durchgängiges Anwendungsbeispiel, wie aus einem isolierten Data-Science-Ergebnis eine konkret genutzte Funktion innerhalb einer .NET-Business-Anwendung entsteht.
7 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige