In die neue Zeit katapultiert Windows-Anwendungen mit WPF-Controls gestalten
Anbieter zum Thema
Bestehende Desktop-Applikationen udn Neuentwicklungen profitieren von modernen Funktionen und einem frischen Design. Dies lässt sich mit modernen Controls für das User Interface erreichen. Der Artikel beleuchtet die Optionen für die Standardtechnologie Windows Presentation Foundation (WPF).

Folgt man den üblichen Statistiken, dann bietet sich für den Bereich der Desktop-Applikationen ein recht einheitliches Bild. Dominierend sind aktuelle Varianten des Betriebssystem Windows, je nach Statistik von mehr als 85 Prozent, gefolgt von macOS mit ca. zehn Prozent und einem deutlich geringeren Anteil von diversen Linux-Distributionen.
Splittet man das Segment der Windows Betriebssysteme weiter auf, dann kommt man zu dem Ergebnis, dass Windows 11 die ebenfalls weiterhin mit Updates versorgte Vorversion Windows 10 noch nicht nach der Anzahl der Installationen abgelöst hat. Auch sind noch weiterhin einige PCs mit Vorversionen – hauptsächlich mit Windows 7 – ausgestattet.
Daraus lässt sich schlussfolgern, dass dem Betriebssystem Windows nach wie vor eine entscheidende Rolle bei der Entwicklung von Business-Applikationen für den Desktop zukommt. Es stehen unterschiedliche Technologien bereit.
Wir können hier grob die folgenden Ansätze unterscheiden: Plattformübergreifende Programmierung, zum Beispiel mit Java oder Qt; Programmierung unter Nutzung des Window API und verwaltete Technologien mit Einsatz des .NET-Frameworks. Dabei kommt dem Grafikframework Windows Presentation Foundation (WPF) in der praktischen Verwendung nach wie vor eine große Rolle zu. Zum heutigen Stand lässt sich die Grafikschnittstelle WPF wie folgt bewerten:
Vorteile | Nachteile |
---|---|
Kompatibel mit aktuellen Versionen von Windows 10 und 11, aber auch mit den Vorversionen, zum Beispiel Windows 7 | die Standard User Interface-Controls sind teilweise nicht mehr zeitgemäß |
Kompatibel mit .NET 4.* und .NET 6 (ehemals .NET Core) und der künftigen Version .NET 7 | keine Verwendung der modernsten Konzepte der Datenbindung, d.h. es werden keine kompilierten Bindungen unterstützt |
umfassende Werkzeugunterstützung mit Designer in Visual Studio und Visual Studio Blend | Neuerungen des Betriebssystems Windows können nicht immer direkt verwendet werden (Nutzung von Workarounds) |
Nutzung der deklarativen Beschreibungssprache XAML für die Erstellung des User Interfaces | Migration auf die Folgetechnologie WinUI 3 mit größeren Anpassungen verbunden |
modernes Architekturkonzept auf der Basis des Model View Model-Pattern | |
umfassende Erweiterung durch zahlreiche User Interface-Controls von Drittanbietern möglich | |
ausgereifte Technologie | |
große Community und Verbreitung in der Praxis | |
Künftig soll die Grafikschnittstelle WinUI 3 der neue Standard für Desktop-Anwendungen werden. Die WinUI 3 liegt jedoch erst in der Produktionsversion 1.* vor. Neben noch zu erwartenden größeren Anpassungen, sind auch noch nicht alle Features vollständig implementiert. Versionen vor Windows 10 werden nicht unterstützt und bisher dürften nur wenige produktiv eingesetzte Anwendungen mit Nutzung der WinUI 3 existieren. Ebenso stellen die Drittanbieter der User-Interface-Controls ihre Komponenten-Bibliotheken erst sukzessive um.
Aus heutiger Sicht spricht daher vieles dafür, Desktop-Anwendungen mit Microsoft Technologien mit der WPF zu erstellen. Existiert eine solche Anwendung bereits, dann sollte sogar eine Migration vom klassischen .NET-Framework (.NET 4.*) nach .NET 6 (ehemals .NET-Core) erwogen werden.
Das User Interface
Dieses spielt aus Sicht der Anwenderinnen und Anwender eine große Rolle. Es muss den Anforderungen in funktioneller Sicht und in Fragen des Designs (User Experience) entsprechen. Die WPF-Entwicklungsplattform unterstützt eine breite Palette an Entwicklungsfeatures. Dazu gehören die Vorgabe eines Anwendungsmodells, die Nutzung von Ressourcen, die Bereitstellung von visuellen Controls, die Verwendung von weiteren grafischen Elementen und Layoutcontainern und Konzepte für die Architektur, inklusive Datenbindung usw.
Mit dem .NET-Framework steht eine leistungsfähige Klassenbibliothek zur Verfügung, welche für zahlreiche Programmieranforderungen bereits fertige Klassen aus allen Bereichen der Anwendungsentwicklung bietet. Die Technologie ist zwar ausgereift, wirkt jedoch in Bezug auf das Design etwas altbacken, denn sie hat eben schon ein paar Jahre auf den „Buckel“.
Ein umfassendes „Facelift“ erfährt die Technologie durch den Einsatz von integrierten und modernen Komponenten. Damit können unterschiedlichste Kundenwünsche leicht implementiert werden. Die eingesetzten Controls bieten ein umfangreiches Funktionsspektrum und ein modernes Look and Feel. Mit anderen Worten: Die Apps können auf diese Weise funktionell und designtechnisch auf die Höhe der Zeit gebracht werden. Diverse Komponentenhersteller bieten eine breite Palette an WPF-Komponenten, welche sich für zahlreiche Anwendungsfälle eignen.
Wiederverwendung für eine hohe Effizienz der Entwicklung
Durch den Einsatz von (visuellen) Komponenten kann die Entwicklungszeit einer Applikation signifikant reduziert werden, d.h. die Time to Market wird deutlich verkürzt. Komponenten stehen dabei für eine Vielzahl von Einsatzzwecken zur Verfügung. Darunter befinden sich sowohl Komponenten für allgemeine Anforderungen, welche in nahezu jeder Applikation benötigt werden, als auch Komponenten für speziellere Aufgaben. Die folgende Übersicht gibt einen Überblick über Einsatzbereiche (Anforderungen) und zeigt welche Komponenten der Hersteller verwendet werden können.
Einsatzbereich | Komponenten (Auszüge) | ||
---|---|---|---|
| Syncfusion | Telerik | DevExpress |
Datenmanagement | DataGrid, TreeGrid | DataGrid, CardView, PivotGrid, Virtual Grid, MultiColumnCombo | DataGrid, TreeView |
Datenvisualisierung | Charts, Diagram, Gantt, Kanban Board, TreeMap | Map, TimeBar, TreeMap, BarCode, Gauge, GanttView | Diagrams, Gantt Control, Gauge Controls, MapControl |
Projekt- und Zeitplanung | Calendar, Scheduler, TimePicker | Calendar, ScheduleView, DatePicker, TimePicker | Calendar, Scheduling |
Layout | Docking, Tabbed MDI Form, GridSplitter | Carousel, Docking, Wizard, TileView, TileList | Layout Manager, Dock Windows |
Navigation | Ribbon, TabControl, Tree Navigator | Menu, NavigationView, OutlookBar, TabControl, RibbonView | Ribbon, Tolbar-Menu |
Basis | Integer TextBox, Double TextBox, Button, Split Button | AutoCompleteBox, ColorPicker, MaskedInput, ComboBox | Data Editors, RichTextEditor |
User Experience | Busy Indicator, ProgressBar | Badge Control, ProgessBar, VirtualKeyboard | - |
Sonstige | SpellChecker, Olap Grid. RichTextBox | PDF Viewer, Spreadsheet, RichTextBox, ExpressionEditor | PDF Viewer, Spell Checker, Application Themes |
Wie man ein User Interface-Control in einer neuen bzw. bestehenden WPF-Applikation verwenden kann, soll nachfolgend gezeigt werden.
Eine Komponente für Projekt- und Zeitplanung
Für dieses Beispiel wird die RadScheduleView-Komponente von Telerik verwendet. Mit Hilfe dieser visuellen Komponente ist es möglich eine interaktive Zeit- und Projektplanung in die eigene Anwendung zu integrieren. In einer kalenderähnlichen Darstellung können Zeitpunkte, Termine, Intervalle usw. angezeigt werden.
Unterschiedliche Ansichten (Tage, Woche, Monat, Zeitleiste) können ausgewählt werden. Ebenso ist eine interaktive und intuitive Bearbeitung der Termine mittels Drag & Drop möglich. Für eine Synchronisation der darzustellenden Termine und Informationen mit der Datenbasis wird die RadScheduleView-Komponente üblicherweise mittels Datenbindung an die Objekte im Quellcode gebunden.
Voraussetzungen
Es wird nachfolgend davon ausgegangen, dass es um die Integration der Scheduling-Komponente in eine bestehende oder neue WPF-Applikation geht. Als Entwicklungsumgebung wird Visual Studio verwendet. Wie eingangs dargestellt, gibt es zwei grundsätzlich unterschiedliche Varianten in Abhängigkeit der .NET-Framework-Version.
Die Komponente RadScheduleView lässt sich sowohl für das ursprüngliche (klassische) .NET-Framework (bis Version 4.8), als auch für die moderne Version .NET 6 verwenden. Funktionell macht es keinen Unterschied. Es muss lediglich die korrekte Version installiert werden.
Installation und Einrichtung
Es gibt mehrere Varianten eine Komponente in einem WPF-Projekt zu verwenden. Zum einem können die Bibliotheken auf dem lokalen Entwicklungssystem bereitgestellt werden, zum anderen kann ein Verweis auf die Bibliothek direkt im Projekt eingebunden werden. Die letzte Variante ist üblich und nutzt in Visual Studio den Paketmanager NuGet. Hierüber werden über den Server die WPF-Komponenten des Herstellers zur Verfügung gestellt. Nach der Einbindung der Bibliothek im Projekt kann diese direkt in einem Fenster der Anwendung verwendet werden.
Verwendung
In WPF wird das User Interface mittels XAML-Code deklariert. Für eine Nutzung der Scheduling-Komponente ist der Verweis auf die Bibliothek notwendig und dann kann diese direkt verwendet werden:
<RadScheduleView x:Name="scheduleview"
AppointmentsSource="{Binding Appointments}"
…
CurrentDate="{Binding CurrentDate,Mode=TwoWay}">
Die Komponente wird mit Ihren Namen (RadScheduleView) eingebunden und dann über die Zuweisung von Werten an ausgewählte Eigenschaften konfiguriert. Ebenso erfolgt eine Bindung an die Daten für die darzustellenden Ereignisse (Termine) über die Eigenschaft AppointmentsSource. Über integrierte Dialoge kann der Anwender beispielsweise einen Termin eingeben. Zusätzlicher Code ist dazu nicht notwendig.
Die Komponente bietet unterschiedliche Ansichten (Tag, Woche, Monat, …). Eine Ansicht kann über die Zuweisung einer Eigenschaft im XAML- und / oder C#-Quellcode aktiviert werden. Ebenso kann man das Design über die Zuweisung von Themen umfassend anpassen.
Weitere interessante und in der Praxis häufig gebrauchte Features sind beispielsweise die Möglichkeit der Sprach- und Formatanpassung, d.h. Lokalisierung und Globalisierung. Damit kann die Komponente auch in mehrsprachigen Anwendungen verwendet werden. Für die Nutzung von externen Daten und den Datenaustausch mit anderen Anwendungen nutzt man die Im- und Exportfunktionen. Dazu wird das übliche Kalenderformat (ics) verwendet. Im Quellcode stellt sich das wie folgt dar:
using (StreamReader reader = File.OpenText("myfile.ics"))
{
var importer = new AppointmentCalendarImporter();
var appointments = importer.Import(reader);
this.scheduleView.AppointmentsSource = appointments;
}
In diesem Fall werden Termine von der Datei myfile.ics importiert, der Datenliste appointments hinzugefügt und dann in der Scheduling-Komponente angezeigt.
Fazit und Ausblick
Komponenten für das User Interface erfüllen wichtige Aufgaben. Sie stellen Funktionalität bereit, deren eigene Implementierung sehr aufwändig wäre. Sie sind somit wichtige Bausteine einer modernen Applikation – hier dargestellt am Beispiel einer WPF-Desktop Anwendung. Durch den vielfachen Einsatz sind diese i.d.R. von hoher Qualität. Ebenso gelingt es auf diese Weise das Design der Anwendung modern zu gestalten.
(ID:48586377)