MVVMCross ist ein plattformübergreifendes Gerüst, das die Entwicklung von Anwendungen unter Verwendung des MVVM-Musters (Modell-View-ViewModel) erleichtert. Es ermöglicht Entwicklern, locker gekoppelte, wartbare und überprüfbare mobile Lösungen zu erstellen, indem die Anwendungslogik in zwei Hauptteile unterteilt wird: das Kernprojekt und das UI -Projekt.
Kernprojekt
Das Kernprojekt ist in der Regel eine .NET -Standardbibliothek, die alle gemeinsam genutzten Code enthält, einschließlich:- ViewModels: Diese sind für den Umgang mit Benutzerinteraktionen und Geschäftslogik verantwortlich.
- Modelle: Stellen Sie die Datenstrukturen dar, die in der gesamten Anwendung verwendet werden.
- Dienste: Bieten Sie Zugriff auf Daten, Webdienste oder andere externe Ressourcen.
- Konverter: Wird für Datentypkonvertierungen verwendet.
- App -Klasse: Dies ist für die Initialisierung der Geschäftslogik der Anwendung und der Ansichtsmodelle verantwortlich. Es wird auch mit der Registrierung benutzerdefinierter Objekte in der IC -Containerinversion des Kontrollverkehrs (IC) behandelt.
- Appstart: Optional verwendet, um zu bestimmen, welches Ansichtsmodell zuerst zuerst vorhanden ist, wenn die Anwendung startet.
UI -Projekt
Das UI-Projekt ist plattformspezifisch und enthält die Benutzeroberflächenelemente und den plattformspezifischen Code. Für jede Zielplattform (z. B. iOS, Android) gibt es ein separates UI -Projekt. Diese Projekte umfassen:- Ansichten: Jede Ansicht ist für die Präsentation eines entsprechenden Ansichtsmodells verantwortlich. Die Ansichten werden mit nativen Plattformwerkzeugen (z. B. XAML für Xamarin.Forms, AXML für Android) entwickelt.
- Native Anwendungshandler: Dies behandelt native Lebenszyklusereignisse. Zum Beispiel bei Android wäre es eine "MainActivity" oder "MainApplication" -Klasse, während es auf iOS eine "AppDelegate" -Klasse wäre.
- Setup-Klasse: Dies ist verantwortlich für das Bootstrapping MVVMCross und die Registrierung plattformspezifischer Dienste. Es initialisiert das MVVMCross-Framework und richtet den IOC-Container mit plattformspezifischen Implementierungen ein.
Interaktion zwischen Kern- und UI -Projekten
Die Wechselwirkung zwischen den Kern- und UI -Projekten in MVVMCross wird durch das MVVM -Muster und den IOC -Container des Gerüsts erleichtert. So interagieren sie:- ViewModel -Bindung: Die UI -Projekte verwenden mvvmcross, um Ansichten an Ansichtsmodelle zu binden. Dies erfolgt in der Regel mit einer Namenskonvention oder durch Dekorieren von Ansichten mit Attributen wie `[mvxviewfor (typeof (homeviewModel))]`.
- Service -Injektion: Das Kernprojekt definiert Schnittstellen für Dienste, die auf jeder Plattform unterschiedlich implementiert werden. Diese Dienste sind im IOC-Container registriert und in Ansichtsmodelle injiziert, sodass plattformspezifische Funktionen ohne Duplizieren von Code zu doppelten.
- Navigation und Präsentation: MVVMCross bietet Mechanismen zum Navigieren zwischen Ansichtsmodellen und Präsentieren von Ansichten. Das Framework verwendet Präsentatoren (z. B. `imvxiosViewPresenter`,` imvxandroidViewPresenter`), um zu verwalten, wie Ansichten auf jeder Plattform angezeigt werden.
Durch die Trennung der Anwendungslogik in Kern- und UI-Projekte ermöglicht MVVMCross Entwicklern, die Wiederverwendung von Code über Plattformen hinweg zu maximieren und gleichzeitig eine plattformspezifische Anpassung und Optimierung zu ermöglichen [1] [3] [5].
Zitate:[1] https://www.mvmcross.com/documentation/getting-started/mvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-apps-with-xamarin-and-mvmcross
[7] https://www.mvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-anapplication-with-mvmcross/