Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existem armadilhas comuns ao usar o MVXVIEW e o MVXVIEWController em MVVMcross


Existem armadilhas comuns ao usar o MVXVIEW e o MVXVIEWController em MVVMcross


Ao usar `mvxview` e` mvxViewController` em mvvmcross, várias armadilhas comuns podem surgir. Compreender essas questões pode ajudar os desenvolvedores a evitá -los e garantir um desenvolvimento mais suave.

1. TIPO PROBLEMAS DE CONVERSÃO **

Um problema comum é a conversão do tipo. No padrão MVVM, as propriedades definidas no ViewModel podem não ser diretamente consumíveis pela interface do usuário. Por exemplo, uma propriedade de imagem pode ser uma matriz de bytes, mas a interface do usuário espera como uma fonte de imagem. O MVVMcross fornece a interface `imvxValuEConverter` para lidar com essas conversões, mas requer fundição, o que pode ser complicado. A classe genérica `mvxValuEConverter` ajuda, permitindo que você especifique os tipos de entrada e saída explicitamente [1].

2. Gerenciamento do ciclo de vida **

Começando com o MVVMCROSS 5.0, os modelos de vista são acoplados ao ciclo de vida da vista, fornecendo métodos como `aparentação ()`, `apareceu ()`, `desaparecendo ()` e `desaparecidos ()`. Embora esses métodos ofereçam mais controle sobre o estado do ViewModel, eles não são 100% confiáveis ​​e podem ser afetados por eventos específicos da plataforma ou lógica de aplicativo personalizada [2] [7]. Garantir o manuseio adequado desses eventos do ciclo de vida é crucial.

3. Problemas de ligação **

Os problemas de ligação podem ocorrer, especialmente ao usar visualizações ou controles personalizados. Por exemplo, se um controle personalizado for criado antes que os dados do ViewModel estejam disponíveis, o `datacontext` poderá ser nulo. O uso do `ALOWBIND` pode ajudar a resolver isso atrasando a ligação até que os dados estejam disponíveis [4].

4. Reutilibilidade de viewmodels **

O ViewModels em MVVMcross, especialmente no iOS, pode ficar bem acoplado a visões específicas, reduzindo sua reutilização. Isso acontece quando o ViewModels lida com a lógica específica da exibição, como formatação de rótulos ou atuação como fontes de dados para visualizações de tabela. Para evitar isso, mantenha o ViewModels focado na lógica de negócios e use conversores ou outros mecanismos para lidar com transformações específicas para a exibição [3].

5. Navegação específica da plataforma **

O MVVMCROSS suporta navegação entre plataformas, mas cada plataforma possui padrões de apresentação exclusivos. No iOS, por exemplo, o uso de storyboards para o fluxo de tela pode entrar em conflito com a abordagem de plataforma cruzada da MVVMcross. É melhor lidar com a lógica de navegação no ViewModel e usar os apresentadores específicos da plataforma para gerenciar como as visualizações são exibidas [5] [9].

6. Segurança do ligante **

O MVVMCROSS não é seguro para vinculadores, o que significa que partes da estrutura podem ser retiradas pelo ligante durante a compilação. Isso pode levar a erros de tempo de execução. Para evitar isso, você precisa sugerir o ligante para preservar as partes necessárias da estrutura [6].

Ao estar ciente dessas armadilhas em potencial, os desenvolvedores podem navegar melhor nas complexidades do uso de `mvxview` e` mvxViewController` nos aplicativos MVVMCROSS.

Citações:
[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvmcross
[2] https://www.mvvmcross.com/mvvmcross-5-release/
[3] https://www.danielhall.io/the-problems-with-mvvm-on-ios
[4] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios-and-mvvmcross
[5] https://kerry.lothrop.de/ios-ui-with-mvvmcross/
[6] https://github.com/mvvmcross/mvvmcross/issues/4286
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/45966067/mvvmcross-iphone-and-ipad-best-practices
[9] https://www.mvvmcross.com/documentation/fundamentals/view-presenters