MVVMCross podporuje kód specifický pro platformu prostřednictvím několika mechanismů, což umožňuje vývojářům vytvářet aplikace napříč platformami a přitom stále využívá funkce nativní platformy. Zde je podrobný přehled o tom, jak MVVMCross usnadňuje kód specifický pro platformu:
1. oddělení obav **
Aplikace MVVMCross jsou obvykle strukturovány do dvou hlavních částí: hlavní projekty UI specifické pro projekt a platformu. The Core project, often implemented as a Portable Class Library (PCL) or .NET Standard library, contains the business logic, models, view models, and interfaces for platform-specific services. Toto oddělení umožňuje maximální opětovné použití kódu napříč platformami a zároveň udržuje kód specifický pro platformu izolovaný v projektech UI [2] [7].2. inverze kontroly (IOC) a injekce závislosti **
MVVMCross používá kontejner IOC ke správě závislostí. To umožňuje vývojářům registrovat služby specifické pro platformu v projektech specifických pro platformu a vložit je do modelů pohledu hlavního projektu. Pokud například aplikace potřebuje přístup k fotoaparátu, může hlavní projekt definovat rozhraní pro přístup k fotoaparátu a každý projekt specifický pro platformu může poskytnout vlastní implementaci tohoto rozhraní. Kontejner IOC pak tyto závislosti vyřeší za běhu a zajišťuje, aby byla použita správná služba specifická pro platformu [2] [8] [11].3. Služby specifické pro platformu **
Služby specifické pro platformu jsou implementovány v nativních projektech UI. Tyto služby jsou registrovány ve třídě nastavení každého projektu platformy. Třída nastavení je zodpovědná za bootstrapping mvvmcross a registraci služeb specifických pro platformu u kontejneru IOC. To umožňuje modelům pohledu v hlavním projektu používat funkčnost specifické pro platformu bez přímého odkazování API specifických pro platformu [2] [7].4. Plugin Framework **
MVVMCross obsahuje rámec pluginů, který vývojářům umožňuje snadno integrovat funkce specifické pro platformu do jejich aplikací. Pluginy mohou poskytovat funkce, jako je umístění GPS, lokalizace, senzory a další. Tyto pluginy jsou registrovány u kontejneru IOC, což umožňuje modelům zobrazení přístup k funkcím specifickým pro platformu prostřednictvím injekce závislosti. Tento rámec také podporuje falešné implementace pro účely testování [4] [11].5. přizpůsobitelný vazebný motor **
MVVMCross poskytuje přizpůsobitelný vazebný motor, který umožňuje vývojářům vytvářet vlastní vazby pro zobrazení specifické pro platformu. Tato funkce je zvláště užitečná při práci s nativními ovládacími prvky, které nepodporují standardní mechanismy vázání dat. Definováním vlastních vazeb mohou vývojáři zajistit, aby jejich modely pohledu byly správně připojeny k zobrazením specifickým pro platformu [4].6. Platform Presensers **
MVVMCross používá přednášející specifické pro platformu (např. `IMVXIOSVIEWPRESENTER`,` IMVXAndroidViewPresenter`) ke správě toho, jak jsou zobrazení zobrazení na každé platformě. Tito přednášející umožňují přizpůsobení logiky prezentace, což vývojářům umožňuje přizpůsobit chování uživatelského rozhraní na požadavky konkrétní platformy [3].Stručně řečeno, MVVMCross podporuje kód specifický pro platformu tím, že poskytuje strukturovaný přístup k oddělení obchodní logiky od implementace specifické pro platformu, využívá IOC a injekci závislosti na správě služeb a nabízí přizpůsobitelné vázání a rámce pluginů pro integraci nativních prvků. To umožňuje vývojářům maximalizovat opětovné použití kódu a přitom stále poskytovat uživatelské zkušenosti specifické pro platformu.
Citace:[1] https://www.suneco.nl/blogs/boost-your-xamarin-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-Applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/Articles/863695/Introduction-to-Mvvmcross-Platform
[6] https://mentormate.com/blog/6-parsons-mvvmcross-speeds-xamarin-develonalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/gettingstarted
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross