In die neue Zeit katapultiert Windows-Anwendungen mit WPF-Controls gestalten

Ein Gastbeitrag von Dr. Veikko Krypczyk

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).

Scheduling-Komponente in Windows Presentation Foundation mit Tagesansicht und Theming.
Scheduling-Komponente in Windows Presentation Foundation mit Tagesansicht und Theming.
(Bild: Krypczyk / Microsoft)

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.

Marktanteile und Versionen des Betriebssystems Windows und dessen Versionen laut <a href=https://www.t4.ai/industry/laptop-os-market-share>T4.ai</a> und <a href=https://www.windowslatest.com/2022/06/05/windows-11-is-gaining-some-decent-momentum-in-desktop-market-share/>Windowslatest.com</a>.
Marktanteile und Versionen des Betriebssystems Windows und dessen Versionen laut T4.ai und Windowslatest.com.
(Bild: Krypczyk / t4.ai / windowslatest.com)

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.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

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}">

Scheduling-Komponente, Wochenansicht und Eingabe eines Termins.
Scheduling-Komponente, Wochenansicht und Eingabe eines Termins.
(Bild: Krypzyk / Microsoft)

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.

Scheduling-Komponente, Tagesansicht und Theming.
Scheduling-Komponente, Tagesansicht und Theming.
(Bild: Krypczyk / Microsoft)

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 als wichtige Bausteine einer Applikation.
Komponenten als wichtige Bausteine einer Applikation.
(Bild: Krypczyk)

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)