Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 我可以在mvvmcross中自定义导航过程吗


我可以在mvvmcross中自定义导航过程吗


是的,您可以在MVVMCross中自定义导航过程。这是有关如何实现这一目标的详细概述:

##自定义导航

MVVMCROSS使用ViewModel-Ind导航方法,其中导航是在ViewModels而不是视图之间发生的。这允许独立于平台的导航逻辑,从而更容易地管理跨iOS和Android等不同平台上的复杂导航流。

###使用自定义视图主持人

自定义导航的一种方法是使用自定义视图演示者。 MVVMCROSS为每个平台提供默认视图演示者,但是您可以覆盖它们以实现自定义导航模式,例如标签显示,对话框或汉堡菜单。为此,您可以创建一个自定义的主持人类,该类从特定于平台的主持人继承(例如,用于xamarin.forms的`mvxformSpagePresenter`),并覆盖诸如`createNavigationPagepage'的方法来使用您的自定义导航组件[2] [9]。

###拦截导航事件

您还可以通过拦截“ ImvxNavigationService”提供的事件来自定义导航。该服务提供了几个事件,例如“ beforenavigate”,“下午”,“ beforeclose”和“ afterclose”,这些活动使您可以在导航过程的不同阶段执行自定义逻辑。例如,您可以使用这些事件在ViewModels之间导航之前或之后执行其他检查或更新[1]。

Uri导航和深层链接

MVVMCross支持URI导航,该导航允许您使用汇编属性为视图模型定义路由。此功能可以深入链接,可以直接从外部链接或通知直接访问应用程序的特定部分。您可以根据viewModel定义多个URIS,并使用“ navigationFacades”来动态确定基于URI参数[1]的ViewModel。

###自定义导航逻辑

对于更复杂的方案,您可以在视图模型中实现自定义导航逻辑。例如,您可以使用“ CannAvigate”方法在尝试之前检查是否可能导航。此外,您可以使用带有参数对象的“ ShowViewModel”方法在ViewModels之间传递参数,从而使您可以在应用程序的不同部分之间传输数据[1] [4]。

###自定义Appstart

最后,您可以通过在自定义`appstart`类中覆盖'startup'方法来自定义应用程序的初始导航。这使您可以根据用户登录状态或从操作系统传递的参数等条件动态地确定要导航到哪个ViewModel [4]。

总体而言,MVVMCross为自定义导航提供了一个灵活的框架,使开发人员能够适应其特定的应用程序需求。

引用:
[1] https://www.mvvmcross.com/documentation/fundamentals/navigation
[2] https://stackoverflow.com/questions/59814748/how-to-to-use-custom-navigationpage-with-mvvmcross-library-in-bibrary-in-xamarin-forms
[3] https://stackoverflow.com/questions/43681201/custom-navigation-controller-in-an-an-mvvmcross-app
[4] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-tip-calc-nevigation
[5] https://github.com/mvvmcross/mvvmcross/issues/4032
[6] https://softwareengineering.stackexchange.com/questions/120090/who-should-control-navigation-in-an-an-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-usion-use--app-anp-setup
[10] https://nicksnettravels.builttoroam.com/post-2019-03-24-viewmodel-to-viewmodel-to-viewmodel-navigation-in-a-a-xamarinforms-with-prism-and-prism-and-prism-and-mvvmcross-aspx/