Áno, môžete prispôsobiť navigačný proces v MVVMCross. Tu je podrobný prehľad o tom, ako to dosiahnuť:
Prispôsobenie navigácie
MVVMCross používa navigačný prístup s prvou spoločnosťou ViewModel, kde sa navigácia vyskytuje skôr medzi ViewModels ako pohľadmi. To umožňuje logiku navigačnej logiky nezávislej od platformy, čo uľahčuje správa zložitých navigačných tokov na rôznych platformách, ako sú iOS a Android.
Používanie moderátorov vlastného zobrazenia
Jedným zo spôsobov, ako prispôsobiť navigáciu, je použitie moderátorov vlastných zobrazení. MVVMCROSS poskytuje predvolené prezentácie zobrazenia pre každú platformu, ale môžete ich prepísať, aby ste implementovali vlastné navigačné vzory, ako sú displeje na záložkách, dialógy alebo ponuky hamburgerov. Za týmto účelom vytvoríte vlastnú moderátorskú triedu, ktorá zdedí od moderátora špecifického pre platformu (napr. „MVXformSpagepresenter“ pre xamarin.forms) a prepíše metódy ako „CreateNaIgationPage“ na použitie vaši vlastný navigačný komponent [2] [9].
Zápredové navigačné udalosti
Navigáciu môžete tiež prispôsobiť zachytením udalostí poskytovaných `IMVXNavigationService`. Táto služba ponúka niekoľko udalostí, ako napríklad „beforeNavigate“, `Popoludňajší“, „beforereclose` a` Doplnkost`, ktoré vám umožňujú vykonávať vlastnú logiku v rôznych fázach navigačného procesu. Tieto udalosti môžete napríklad použiť na vykonanie ďalších kontrol alebo aktualizácií pred alebo po navigácii medzi spoločnosťou ViewModels [1].
URI navigácia a hlboké prepojenie
MVVMCross podporuje navigáciu URI, ktorá vám umožňuje definovať trasy pre vaše pohľady pomocou atribútov zostavy. Táto funkcia umožňuje hlboké prepojenie, kde je možné pristupovať priamo z externých odkazov alebo oznámení konkrétnych častí vašej aplikácie. Môžete definovať viacero URI na ViewModel a pomocou „navigationFacades“ dynamicky určiť, ktorý program ViewModel na navigáciu na základe parametrov URI [1].
Vlastná navigačná logika
V prípade zložitejších scenárov môžete vo svojich ViewModels implementovať vlastnú logiku navigácie. Napríklad môžete použiť metódu „Cannavigate“ na kontrolu, či je navigácia možná pred pokusom o jej pokus. Ďalej môžete preniesť parametre medzi spoločnosťou ViewModels pomocou metódy `ShowviewModel` s objektom parametrov, čo vám umožní prenášať údaje medzi rôznymi časťami vašej aplikácie [1] [4].
Custom AppStart
Nakoniec si môžete prispôsobiť počiatočnú navigáciu svojej aplikácie prepísaním metódy `startup` v vlastnej triede` AppStart`. To vám umožní dynamicky rozhodnúť, v ktorom ViewModel sa naviguje na základe podmienok, ako je stav prihlásenia používateľa alebo parametre odovzdané z operačného systému [4].
Celkovo poskytuje MVVMCross flexibilný rámec na prispôsobenie navigácie, čo vývojárom umožňuje prispôsobiť sa ich konkrétnym potrebám aplikácie.
Citácie:[1] https://www.mvvmcross.com/documentation/funmamentals/navigation
[2] https://stackoverflow.com/questions/59814748/how-to-use-cecusty-vigagepage-with-mvvmcross-library-in-xamarin-forms
[3] https://stackoverflow.com/questions/43681201/custom-navigation-controller-in-an-mvvvmcross-App
[4] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-ip-calc-vedation
[5] https://github.com/mvvmcross/mvvmcross/issues/4032
[6] https://softwareEngineering.stackexchange.com/questions/120090/whošould-control-navigation-in-an-an-mvvm-application
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-verview
[8] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[9] https://www.mvvmcross.com/documentation/advanced/custoughing-using-app-and-setup
Https://nicksnettravels.builttoroam.com/post-2019-03-24-Viewmodel-to-viewmodel-avigation-inagation-in-a-xamarinforms-application-with-prism-mcross-aspx/