Ano, můžete přizpůsobit proces navigace v MVVMCross. Zde je podrobný přehled o tom, jak toho dosáhnout:
Přizpůsobení navigace
MVVMCross používá přístup k viewModel-First navigační přístup, kde se navigace vyskytuje spíše mezi ViewModely než pohledem. To umožňuje navigační logiku nezávislou na platformě, což usnadňuje správu komplexních navigačních toků na různých platformách, jako jsou iOS a Android.
Používání moderátorů vlastního zobrazení
Jedním ze způsobů, jak přizpůsobit navigaci, je použití moderátorů vlastního zobrazení. MVVMCross poskytuje výchozí přednášející zobrazení pro každou platformu, ale můžete je přepsat a implementovat vlastní navigační vzory, jako jsou displeje, dialogy nebo menu hamburger. Chcete-li to provést, vytvoříte vlastní třídu moderátorů, která zdědí od přednášejícího specifického pro platformu (např. „MVXFormSpagePresenter` pro Xamarin.Forms) a přepínat metody, jako je„ CreateNavigationPage “, používat vlastní navigační komponenty [2] [9].
Intercepting navigační akce
Navigaci můžete také přizpůsobit zachycováním událostí poskytovaných „ImvxNavigationService`. Tato služba nabízí několik událostí, jako je `beforneravigate`,` refficvavigate`, `beforeclose` a„ afterclose “, které vám umožňují provádět vlastní logiku v různých fázích navigačního procesu. Můžete například tyto události použít k provádění dalších kontrol nebo aktualizací před nebo po navigaci mezi ViewModely [1].
Navigace Uri a hluboké propojení
MVVMCross podporuje navigaci URI, která vám umožňuje definovat trasy pro vaše ViewModels pomocí atributů sestavy. Tato funkce umožňuje hluboké propojení, kde lze přistupovat k konkrétním částem aplikace přímo z externích odkazů nebo oznámení. Můžete definovat více URI na viewModel a použít „navigační -facades“ k dynamickému určení, na který viewModel se má navigovat na základě parametrů URI [1].
Logika vlastní navigace
Pro složitější scénáře můžete implementovat vlastní navigační logiku ve svých ViewModels. Například můžete použít metodu „Cannavigate“, abyste zkontrolovali, zda je navigace možná před pokusem. Kromě toho můžete předávat parametry mezi ViewModely pomocí metody `ShowViewModel` s objektem parametru, což vám umožní přenášet data mezi různými částmi aplikace [1] [4].
Custom AppStart
Nakonec si můžete přizpůsobit počáteční navigaci vaší aplikace přepsáním metody „spuštění“ v vlastní třídě „AppStart“. To vám umožní dynamicky rozhodnout, do kterého ViewModel se můžete navigovat na základě podmínek, jako je stav přihlášení uživatele nebo parametry předávané z operačního systému [4].
Celkově MVVMCross poskytuje flexibilní rámec pro přizpůsobení navigace, což vývojářům umožňuje přizpůsobit jej jejich konkrétním potřebám aplikací.
Citace:[1] https://www.mvvmcross.com/documentation/fundamentals/navigation
[2] https://stackoverflow.com/questions/59814748/how-to-use-sustom-navigationpage-with-mvvmcross-library-in-xamarin-forms
[3] https://stackoverflow.com/questions/43681201/custom-navigation-controller-in-an-mvvmcross-app
[4] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-tip-calc-navigation
[5] https://github.com/mvvmcross/mvvmcross/issues/4032
[6] https://softwareEngineering.stackexchange.com/questions/120090/who-shald-control-navigation-in-an-mvvm-application
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[9] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[10] https://nicksnettravels.BuiltToroam.com/post-2019-03-24-viewModel-to-viewModel-navigation-in-xamarinforms-application-with-prism-and-sccross-assx/