Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Posso personalizar o processo de navegação em mvvmcross


Posso personalizar o processo de navegação em mvvmcross


Sim, você pode personalizar o processo de navegação no MVVMcross. Aqui está uma visão geral detalhada de como conseguir isso:

personalização de navegação

O MVVMcross usa uma abordagem de navegação ViewModel-primeiro, onde ocorre a navegação entre os modelos do ViewModels e não as visualizações. Isso permite a lógica de navegação independente da plataforma, facilitando o gerenciamento de fluxos de navegação complexos em diferentes plataformas como iOS e Android.

Usando apresentadores de exibição personalizados

Uma maneira de personalizar a navegação é usando os apresentadores de exibição personalizados. O MVVMCROSS fornece apresentadores de exibição padrão para cada plataforma, mas você pode substituí -los para implementar padrões de navegação personalizados, como displays, diálogos ou menus de hambúrguer. Para fazer isso, você cria uma classe de apresentador personalizada que herda do apresentador específico da plataforma (por exemplo, `mvxformSpagePresender` para xamarin.forms) e substituir métodos como` createNavigationPage` para usar seus componentes de navegação personalizada [2] [9].

interceptando eventos de navegação

Você também pode personalizar a navegação interceptando eventos fornecidos pelo 'imvxnavigationservice`. Este serviço oferece vários eventos como `beforenavigate`,` tardenvigate`, `beforeClose` e` AfterClose`, que permitem executar a lógica personalizada em diferentes estágios do processo de navegação. Por exemplo, você pode usar esses eventos para realizar verificações ou atualizações adicionais antes ou depois de navegar entre o ViewModels [1].

Navegação de URI e link profundo

O MVVMCROSS suporta a navegação URI, que permite definir rotas para seus modelos ViewModels usando atributos de montagem. Esse recurso permite a ligação profunda, onde partes específicas do seu aplicativo podem ser acessadas diretamente a partir de links ou notificações externas. Você pode definir vários URIs por ViewModel e usar "NavigationFacades" para determinar dinamicamente qual ViewModel navegar com base nos parâmetros URI [1].

lógica de navegação personalizada

Para cenários mais complexos, você pode implementar a lógica de navegação personalizada em seus modelos ViewModels. Por exemplo, você pode usar o método `CannAVigate` para verificar se uma navegação é possível antes de tentá -la. Além disso, você pode passar os parâmetros entre o ViewModels usando o método `showViewModel` com um objeto de parâmetro, permitindo que você transfira dados entre diferentes partes do seu aplicativo [1] [4].

Appstart personalizado

Por fim, você pode personalizar a navegação inicial do seu aplicativo, substituindo o método `startup` em uma classe` appstart 'personalizada. Isso permite que você decida dinamicamente qual ViewModel navegar com base em condições como o status de login do usuário ou os parâmetros passados ​​do sistema operacional [4].

No geral, o MVVMcross fornece uma estrutura flexível para a personalização da navegação, permitindo que os desenvolvedores a adaptem às suas necessidades específicas de aplicativos.

Citações:
[1] https://www.mvvmcross.com/documentation/fundamentals/navigation
[2] https://stackoverflow.com/questions/59814748/how-to-use-custom-nalvigationPage-with-mvvmcross-library-in-xamarin-forms
[3] https://stackoverflow.com/questions/43681201/custom-nalavigation-controller-in-an-mvvmcross-app
[4] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-tip-calc-nalc-nalvigigation
[5] https://github.com/mvvmcross/mvvmcross/issues/4032
[6] https://softwareEngineering.stackexchange.com/questions/120090/who-shanche-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-a-xamarinforms-application-with-prism-nd-mvmcross-aspx/