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

DDC hakt nach: Welche neuen Gefahren lauern im Web
Web-Security ist unsexy, aber überlebenswichtig: Christian Wenz, Experte für Webanwendungssicherheit, hält auf der .NET Developer Conference 2025 eine Session zu den erwarteten OWASP Top Ten 2025. Im Interview erklärt er, wie sich die Security-Landschaft verändert hat.
3 Minuten
8. Sep 2025
Mehr Funktionen für das Event-Sourcing
Präzisere Konsistenzkontrolle, digitale Signaturen und eine verwaltete Cloud-Version: Das bringt die Version 1.1 der EventSourcingDB.
3 Minuten
4. Sep 2025
DDC hakt nach: Wie kommst Du zu gelebter Agilität?
Viele Teams betreiben nur "Doing Agile" statt echte Agilität zu leben. Dem begegnet Agile-Expertin Ina Einemann in ihrem Workshop auf der .NET Developer Conference 2025 mit kleinen Verhaltensänderungen und praktischen Tools. Im Interview erklärt sie die häufigsten Warnsignale.
4 Minuten
1. Sep 2025

Das könnte Dich auch interessieren

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
Sicher ist sicher - Azure DevOps Pipelines Security
Als integraler Bestandteil der Entwicklungsumgebung ist Azure DevOps Pipelines oft Ziel von Angriffen. Da ist es gut zu wissen, wo die Schwachstellen des Systems liegen.
14 Minuten
16. Jun 2025
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
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige