So funktioniert das Zusammenspiel von MVVM und Xamarin.Forms.
Trennung mit Potential
Seit der Übernahme von Xamarin durch Microsoft erhielt das Framework Xamarin.Forms viele Neuerungen. Nicht nur die Funktionalität und die unterstützten Plattformen wurden erweitert, sondern auch die Qualität gesteigert, in Form von höherer Geschwindigkeit und verbessertem Tooling. Mit dem ursprünglichen Ziel entwickelt, die verschiedensten Endgeräte mit einer einheitlichen Codebasis zu unterstützen, entstanden auch neue Konzepte für das Realisieren von Projekten. Darunter das MVVM-Pattern (Model-View-ViewModel), dessen Zusammenspiel mit Xamarin.Forms Gegenstand dieses Artikels ist. Es werden die Vor- und Nachteile von MVVM beleuchtet und das Entwurfsmuster anhand eines Beispiels erklärt. Im Anschluss daran werden nützliche Erweiterungen vorgestellt, welche die Entwicklung mit MVVM vereinfachen.
Das MVVM-Pattern – Schichtentrennung (Bild 1)
Das Entwurfsmuster MVVM
Der ursprüngliche Entwurf von MVVM geht auf das Jahr 2005 zurück, als John Gossman das neue Pattern auf Basis von Martin Fowlers MVP (Model-View-Presenter) vorlegte. Der Unterschied zum MVP-Muster liegt darin, dass MVVM speziell für die Entwicklung von WPF-Anwendungen gedacht war, wohingegen das MVP-Entwurfsmuster unabhängig von der Benutzeroberfläche (User Interface, UI) funktioniert. Mittlerweile hat sich aber die Funktionsweise von MVVM in allen modernen UI-Projekten bewährt, ganz gleich ob im Web oder auf mobilen Endgeräten.
MVVM bringt verschiedene Vorteile mit. Durch die Trennung der Schichten kann die Geschäftslogik unabhängig vom UI implementiert werden, weswegen der Cross-Plattform-Ansatz stärker in den Vordergrund tritt. Auch die Funktionalität des UI – welche im ViewModel beheimatet ist – kann durch die Trennung von View und ViewModel für sich entwickelt und getestet werden. Das parallele Arbeiten am Projekt wird ebenso vereinfacht. Während ein reiner UI-Entwickler sich losgelöst von der Logik um die Darstellung kümmert, kann parallel dazu die Funktionalität im ViewModel umgesetzt werden. Als weiterer Punkt sticht die Wiederverwendbarkeit des ViewModels hervor – da dieses losgelöst von der View arbeitet, könnte es an anderer Stelle erneut zum Einsatz kommen.
Die Funktionsweise von MVVM
Wie aber funktioniert das MVVM-Pattern nun genau? Dies zu verstehen hilft die Grafik in Bild 1, welche die Trennung der drei Schichten zeigt. Zum einen gibt es die View, welche in Xamarin.Forms über eine Page (meist ContentPage) als XAML-Dokument abgebildet wird. In der View werden alle Steuerelemente und Anzeigen integriert und im Idealfall vollständig in XAML implementiert. Die Code-behind-Datei – das ist die der XAML-View zugeordnete .cs-Datei – sollte möglichst wenig Code enthalten. Der Fokus der View ist schließlich die Darstellung, und die braucht im Idealfall keine Logik.
Die View wird über das ViewModel abgebildet…