Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 6 Min.

WPF unter Linux und macOS

Mit Avalonia XPF tauscht das Avalonia-Team den Unterbau von WPF aus, um das UI-Framework für Linux und macOS fit zu machen.
WPF Linux
© EMGenie

WPF ist ein mächtiges und ausgereiftes UI-Framework. Es steht für das klassische .NET Framework und als Open Source für das aktuelle .NET zur Verfügung. WPF bietet eine lange Liste von Features und kann durch diverse freie und kostenpflichtige Bibliotheken erweitert werden. Klingt nach einer hervorragenden Grundlage zur Entwicklung von Business-Applikationen? Es gibt aus Sicht des Autors zwei wesentliche Nachteile, die es zu beachten gilt.

WPF funktioniert ausschließlich auf Windows. Soll eine Applikation auf Linux oder macOS portiert werden, steht man schnell vor einem Problem. Der zweite Nachteil ist die Tatsache, dass WPF seit vielen Jahren nur geringfügig weiterentwickelt wurde. In den letzten Versionen von WPF waren das im Wesentlichen Qualitätsverbesserungen, Features wie der vorher fehlende OpenFolderDialog oder zuletzt in .NET 9 ein neues, modernes Fluent Theme.

Als mögliche Lösung für den erstgenannten Nachteil steht seit 2023 Avalonia XPF zur Verfügung. Avalonia XPF ist ein kommerzielles Projekt des Teams hinter dem Open-Source Cross-Plattform-UI-Framework Avalonia. Es verspricht, eine WPF-Applikation in Minuten auf Linux und macOS portieren zu können. Eine bekannte Applikation, die diese Möglichkeit nutzt, ist LINQPad. LINQPad ist ein Tool zum Ausführen kleiner C#-Snippets – entweder zum Testen diverser C#-Konstrukte oder zum Testen von LINQ-Abfragen gegen eine Datenbank. Bild 1 zeigt, wie das unter macOS aussieht.

Die WPF-Applikation LINQPad 8 unter macOS, portiert mit Avalonia XPF (Bild 1)

Die WPF-Applikation LINQPad 8 unter macOS, portiert mit Avalonia XPF (Bild 1)

© Autor

Der zweite Nachteil ist die geringfügige Weiterentwicklung von WPF selbst. An dieser Stelle können Komponentenbibliotheken von Drittanbietern helfen, die den Standardumfang von WPF in viele verschiedene Richtungen erweitern. Am Kern selbst können diese aber nichts verbessern, dieser setzt auch in 2025 nach wie vor auf das veraltete DirectX 9. Eine andere Variante ist eine Migration auf ein anderes, moderneres UI-Framework. Entscheidet man sich hier für das Cross-Plattform-UI-Framework Avalonia, so eröffnet sich mit Avalonia XPF ein Weg zur schrittweisen Migration. Avalonia XPF erlaubt es, Avalonia-Controls und WPF-Controls zu mischen.

Funktionsweise von Avalonia XPF

Die Idee hinter Avalonia XPF hört sich einfach und logisch an. WPF setzt für das Rendering die Komponente MilCore ein. MilCore ist nativ implementiert und setzt auf Windows-APIs wie DirectX. In einfachen Worten hat das Avalonia-Team einen Fork von der Open-Source Variante von WPF erstellt und MilCore durch Avalonia ausgetauscht. Bild 2 stellt das in einer Vergleichsgrafik dar.

Vergleich von WPF und Avalonia XPF (Bild 2)

Vergleich von WPF und Avalonia XPF (Bild 2)

© Autor

Daneben ersetzt Avalonia XPF weitere native Aufrufe des Windows-API gegen die jeweiligen Alternativen von Linux und macOS. Auch typische Tastaturkombinationen werden gemappt – insbesondere zwischen Windows und macOS unterscheiden sie sich teilweise deutlich.

Um eine bestehende WPF-Applikation zu Avalonia XPF zu portieren, reicht es im einfachsten Fall, den privaten NuGet-Feed von Avalonia XPF zu abonnieren und das SDK in der .csproj-Datei  auf Xpf.Sdk umzustellen. Listing 1 zeigt beispielhaft den Inhalt einer solchen .csproj-Datei. In der ersten Zeile ist dabei direkt das SDK von Avalonia XPF zu erkennen.

<Project Sdk="Xpf.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net9.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>
 
  <!-- ... -->

</Project>

 

Die Migration auf Avalonia XPF ist dann einfach, wenn die Voraussetzungen für Avalonia XPF erfüllt sind. Einer der aus Sicht des Autors wichtigsten Punkte ist dabei, dass auf eine aktuelle .NET-Version gesetzt wird. Die .NET-Framework-Variante von WPF wird nicht unterstützt. Ist die zu migrierende WPF-Applikation noch abhängig von .NET Framework, so wäre der erste Schritt, auf das aktuelle .NET zu migrieren. Ein weiteres Hindernis können weitere Abhängigkeiten sein, die eine Migration weg von Windows verhindern. Ein Beispiel wären Zugriffe auf Windows-APIs wie die Registry oder WMI. Hat die WPF-Applikation solche Abhängigkeiten, so müssen auch dafür Alternativen oder Workarounds gefunden werden.

Für Nutzer von Control-Bibliotheken von Drittanbietern gibt es eine gute Nachricht. Nach Angaben des Avalonia-Teams werden viele solcher Komponenten unterstützt. Über die Website des Avalonia-Teams kann man sich darüber informieren, welche Controls funktionieren und wo es bekannte Probleme gibt. Auf der Liste finden sich bekannte Namen wie Actipro, DevExpress, Infragistics, Syncfusion und Telerik.

Einschränkungen von Avalonia XPF

Alles kommt zu einem Preis, und damit meint der Autor nicht nur den Lizenzpreis. Avalonia XPF unterstützt zum Zeitpunkt dieses Artikels einige WPF-Features nicht. Beispiele sind:

  • 3D-Rendering
  • Ink Canvas
  • Media-Player
  • Mehrere UI-Threads
  • Rechtschreibprüfung
  • Custom Window Chrome
  • XPS-Dokumente
  • Win32 Interop

 

Das sind Funktionen, die bei vielen Business-Applikationen auf Basis von WPF ohnehin nur eine geringere Rolle spielen. Das Avalonia-Team bietet an, bei der Suche nach Alternativen zu solchen Features zu unterstützen.

Avalonia XPF bleibt im Kern WPF

Für das Avalonia-Team hat es hohe Priorität, die Kompatibilität zu WPF weiterhin auf einem hohen Grad zu halten, um auch künftige Weiterentwicklung von WPF in Avalonia XPF übernehmen zu können. Aus diesem Grund ändert das Avalonia-Team am Kern von WPF nichts.  Avalonia XPF ist im Herzen somit weiterhin WPF. Typische Verbesserungen, die man bei einer Migration hin zu Avalonia erhält, gelten bei Avalonia XPF also nicht. Mit solchen Verbesserungen meint der Autor etwa eine erhöhte Performance, Features wie Compiled Binding, das an CSS angelehnte Styling-System und Testautomatisierung über den Headless-Modus.

WPF-Controls in Avalonia nutzen

Ein weiterer Vorteil von Avalonia XPF ist die Möglichkeit, WPF-Controls innerhalb von Avalonia zu nutzen. Avalonia selbst hat einen nennenswerten Umfang von Features, der dem von WPF an vielen Stellen ähnelt. Von den bekannten kommerziellen Komponentenherstellern gibt es bis dato aber mit Actipro nur einen, der Controls für Avalonia im Angebot hat. Das Avalonia-Team selbst springt mit dem Paket Avalonia Accelerate in die Lücke, steht damit aber noch am Anfang. Drittanbieter-Komponenten wie ein mächtiges DataGrid fehlen für Avalonia nach wie vor. An solchen Stellen ist es über Avalonia XPF möglich, Komponenten von Drittanbietern mit in einer Avalonia-Applikation zu benutzen.

Fazit

Avalonia XPF kommt zu einem auf dem ersten Blick relativ hohen Lizenzpreis. Dagegen steht das Potenzial, in vergleichsweise kurzer Zeit eine WPF-Applikation für macOS und Linux fit machen zu können – ohne dass eine Migration auf ein anderes UI-Framework notwendig wird. Zudem wird eine schrittweise Migration hin zu Avalonia vereinfacht.

Aus Sicht des Autors ist Avalonia XPF eine gute Ergänzung in der Liste der UI-Frameworks von .NET. Es ergeben sich drei spannende Einsatzszenarien:

  • WPF-Applikationen auch für Linux und macOS bereitstellen
  • Schrittweise Migration von WPF zu Avalonia
  • WPF-Controls innerhalb einer Avalonia-Applikation nutzen

 

Für diese Szenarien kann ein genauerer Blick auf Avalonia XPF lohnen. Bezüglich einer Migration einer WPF-Applikation können zwar die im Artikel genannten Einschränkungen dafür sorgen, dass die versprochene Migration „in Minuten“ so nicht ganz aufgeht, dennoch kann der Aufwand signifikant geringer sein als bei einer Migration auf ein anderes UI-Framework.

 

Neueste Beiträge

DWX 2026: Vier Tage Sommer. Vier Tage Code. Die DWX ist zurück – und größer denn je - Die Konferenz für AI, Cloud, Web und .NET
Du denkst, Mannheim im Sommer ist heiß? Dann hast du den Code noch nicht gespürt. Vom 29. Juni bis 2. Juli 2026 verwandelt sich das m:con Congress Center Rosengarten wieder zur Entwickler-Werkstatt: Die DWX 2026 startet durch!
3 Minuten
28. Aug 2025
DDC hakt nach: Was macht Agents zu echten Teammitgliedern?
Aus AI-Helferlein werden vollwertige Teammitglieder: Mike Kaufmann, Git- und DevOps-Experte, erklärt auf der .NET Developer Conference 2025, wie GitHub Copilot Agents die Softwareentwicklung revolutionieren. Im Interview verrät er, wie sich die Rolle des Entwicklers fundamental wandelt.
3 Minuten
13. Aug 2025
DDC hakt nach: Wie .NET Aspire und Dapr den Service-Discovery-Albtraum beenden
Service-Discovery-Probleme führen direkt in die Katastrophe: Ports ändern sich, URLs werden umbenannt, Services finden sich nicht mehr. Experte Florian Lenz verspricht auf der .NET Developer Conference 2025 Abhilfe durch .NET Aspire und Dapr.
3 Minuten
13. Aug 2025

Das könnte Dich auch interessieren

React, Angular und Vue.js: Eine Gegenüberstellung von Frontend-Frameworks - Web
Moderne JavaScript-Frameworks sorgen für höchste Effizienz in der Webentwicklung. Doch welches Framework eignet sich für welchen Einsatz?
10 Minuten
29. Feb 2024
Eine Desktop-App mit Python schreiben - Tutorial
Python taugt für viele Zwecke. Man kann sogar eine Desktop-App inklusive grafischer Benutzeroberfläche damit erstellen. Ein englischsprachiges Tutorial von Michael Herrmann erklärt wie's geht.
2 Minuten
26. Sep 2018
UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige