introducción a xamarin utilizando mvvmcross
TRANSCRIPT
![Page 1: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/1.jpg)
Introducción a Xamarin Classic (MVVMCross)dotNet MálagaJavier Suárez
![Page 2: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/2.jpg)
dotNet Málaga
Javier Suárez RuizDeveloper Plain ConceptsMicrosoft MVP Windows Platform DevelopmentXamarin Certified Developer• Blog: http://geeks.ms/blogs/jsuarez• Email: [email protected]• Twitter: @jsuarezruiz
![Page 3: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/3.jpg)
dotNet Málaga
![Page 4: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/4.jpg)
dotNet Málaga
AgendaMVVMCross
1.MVVM2.MVVMCross3.Bindings4.Comandos5.Navegación6.Listados7.Plugins
Compartir la mayor cantidad de código posible8.PCL9.DEMOs
![Page 5: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/5.jpg)
Xamarin Classic
![Page 6: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/6.jpg)
dotNet Málaga
COMPARATIVA DE PLATAFORMAS MÓVILES. NATIVO
IDE
Lenguaje
Vistas
iOS Android Windows Phone
Xcode Android Studio
Visual Studio
ObjectiveC o Swift
Java C#
Storyboard AXML XAMLMVC MVC MVVMPatrón diseño
![Page 7: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/7.jpg)
dotNet Málaga
COMPARATIVA DE PLATAFORMAS MÓVILES. XAMARIN
IDE
LenguajeVistas
iOS Android Windows Phone
Visual Studio
Visual Studio
Visual Studio
C# C# C#
Storyboard AXML XAMLMVVM MVVM MVVM
Patrón diseño
![Page 8: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/8.jpg)
dotNet Málaga
MVVM
View
ViewModel
Model
get/set PropiedadesComandos
Notifica cambios
C#
Models
ViewView
ViewModel
ViewModel
ModelM
odel
Cross PlatformEspecífico
de la Plataforma
![Page 9: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/9.jpg)
dotNet Málaga
PERO… ¿PORQUÉ MVVM?• Mayor facilidad para mantener,
extender y compartir el código.• Más facilidad a la hora de
colaborar.• Testing.• Más fácil de diseñar.
![Page 10: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/10.jpg)
dotNet Málaga
MVVMCROSS
•Cross Platform MVVM Development Framework•Gratuito, Open Source, Comunidad•Soporta
•WP 7, 8, 8.1•WPF•WinRT•Xamarin.Android•Xamarin.iOS•Xamarin.Mac
•AKA Mvx
![Page 11: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/11.jpg)
dotNet Málaga
Portable Class Library
•1 Librería•Multiples Platformas•Incluyendo:• Xamarin.Android• Xamarin.iOS
![Page 12: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/12.jpg)
dotNet Málaga
Características de una Portable Class Library•Código compartido centralizado• Se depura igual que si el código estuviese en un
Proyecto específico.
•Compartir Proyecto/Assembly• NuGet
![Page 13: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/13.jpg)
dotNet Málaga
MVVMCross & PCL
View
ViewModel
Model
PropiedadesComandos
Notifica cambios
C#
Model
ViewView
ViewModel
ViewModel
ModelM
odel
Cross Platform -PCLEspecífico
de Plataforma
![Page 14: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/14.jpg)
dotNet Málaga
INotifyPropertyChanged
![Page 15: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/15.jpg)
dotNet Málaga
Propriedad típica en la ViewModel
![Page 16: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/16.jpg)
dotNet Málaga
Binding OneWay
PersonViewModel
FirstName
LastName
DateOfBirth
First NameJonLast NameDoeDate of birth12/07/1989
![Page 17: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/17.jpg)
dotNet Málaga
UI Syntax
![Page 18: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/18.jpg)
dotNet Málaga
Two Way Binding
PersonViewModel
FirstName
LastName
DateOfBirth
First NameJonLast NameDoeDate of birth12/07/1989
![Page 19: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/19.jpg)
dotNet Málaga
UI Syntax
![Page 20: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/20.jpg)
DEMODEMODEMO
Nuestra primera App multiplataforma
![Page 21: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/21.jpg)
dotNet Málaga
Value Conversion
PersonViewModel
FirstName
LastName
DateOfBirth
First NameJonLast NameDoeAge24
“Age” Conversion
![Page 22: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/22.jpg)
dotNet Málaga
IMvxValueConverter
![Page 23: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/23.jpg)
dotNet Málaga
AgeValueConverter
![Page 24: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/24.jpg)
dotNet Málaga
UI Syntax
![Page 25: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/25.jpg)
dotNet Málaga
UI Syntax
![Page 26: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/26.jpg)
DEMODEMODEMOConverters
![Page 27: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/27.jpg)
dotNet Málaga
MyViewModel
Necesita Localización
Necesita SQL
Necesita CalculadoraMy Tax
Calculator
Windows Phone Location
Inversión de Control
Windows Phone SQL
El contenedor
![Page 28: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/28.jpg)
dotNet Málaga
MyViewModel
Necesita Localización
Necesita SQL
Necesita CalculatorMy Tax
Calculator
iOS Location
Inversión de Control
iOS SQL
El contenedor
![Page 29: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/29.jpg)
dotNet Málaga
Mvx.Register<T>
RegisterSingleton
Lazy - RegisterSingleton
RegisterType
![Page 30: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/30.jpg)
dotNet Málaga
Registro automático
![Page 31: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/31.jpg)
dotNet Málaga
Mvx.Resolve<T>
Resolve
CanResolve
TryResolve
![Page 32: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/32.jpg)
dotNet Málaga
Mvx Construction
Resolución en el constructor
IoCConstruct
![Page 33: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/33.jpg)
DEMODEMODEMO
Nuestro primer servicio
![Page 34: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/34.jpg)
dotNet Málaga
Acciones (Comandos)
PersonViewModel
FirstName
LastName
DateOfBirth
First NameJonLast NameDoeDate of birth12/07/1989
AddCommand
![Page 35: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/35.jpg)
dotNet Málaga
ICommand
![Page 36: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/36.jpg)
dotNet Málaga
ViewModel Command
![Page 37: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/37.jpg)
dotNet Málaga
UI Syntax
![Page 38: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/38.jpg)
DEMODEMODEMO
Llega el turno de realizar acciones!
![Page 39: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/39.jpg)
dotNet Málaga
COLECCIONES
PeopleViewModelHackers
List<PersonViewModel>
Greg
Jon
Daniel
Cool Hackers
Jon@redth
Greg@gshackles
Daniel@dsplaisted
Tomasz
Tomasz@cheesebar
![Page 40: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/40.jpg)
dotNet Málaga
INotifyCollectionChanged
![Page 41: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/41.jpg)
dotNet Málaga
ObservableCollection
![Page 42: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/42.jpg)
dotNet Málaga
ViewModel Collection Property
![Page 43: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/43.jpg)
dotNet Málaga
UI Syntax
![Page 44: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/44.jpg)
dotNet Málaga
UI Syntax
![Page 45: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/45.jpg)
dotNet Málaga
UI Syntax
![Page 46: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/46.jpg)
dotNet Málaga
UI Syntax
![Page 47: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/47.jpg)
DEMODEMODEMOListados
![Page 48: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/48.jpg)
dotNet Málaga
Navegación
Uso de parámetrosShowViewModel<DetailViewModel>(new DetailParameters() { Index = 2 });
public void Init(DetailParameters parameters)
{
// use the parameters here
}
![Page 49: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/49.jpg)
dotNet Málaga
Go Back
![Page 50: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/50.jpg)
DEMODEMODEMONavegación
![Page 51: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/51.jpg)
dotNet Málaga
Plugins
• Forma rápida y sencilla de añadir funcionalidad específica de cada plataforma.
• Usamos NuGet o NinjaCoder para añadirlos.
• Consumimos los plugins utilizando inyección de dependencias o Service Locator.
• Disponibles: Location, PhoneCall, Email, Sqlite, etc.
![Page 52: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/52.jpg)
DEMODEMODEMO
Añadiendo y utilizando plugins
![Page 53: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/53.jpg)
Compartir la mayor cantidad de código posible
![Page 54: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/54.jpg)
dotNet Málaga
EL PROBLEMA
Creas la misma Appvarias veces
![Page 55: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/55.jpg)
dotNet Málaga
COMPARATIVA DE PLATAFORMAS MÓVILES NATIVO
IDE
Lenguaje
Vistas
iOS Android Windows Phone
Xcode Android Studio
Visual Studio
ObjectiveC o Swift
Java C#
Storyboard AXML XAMLMVC MVC MVVMPatrón diseño
![Page 56: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/56.jpg)
dotNet Málaga
¿Qué podemos compartir con este planteamiento?
![Page 57: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/57.jpg)
dotNet Málaga
![Page 58: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/58.jpg)
dotNet Málaga
El enfoque de XamarinCon Xamarin.Forms:
Se comparte más, controles compartidos
El enfoque tradicional de Xamarin
Shared UI Code
![Page 59: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/59.jpg)
dotNet Málaga
![Page 60: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/60.jpg)
dotNet Málaga
TÉCNICAS DE REUTILIZACIÓN DE CÓDIGO
• Copiar y pegar.• Mismo código
duplicado.• Difícil de
mantener.• Evitar en lo
posible.
Ctrl-C, Ctrl-V
• Modelo• VistaModelo• Vista
MVVM
• Enlaces simbólicos.
• Depende del lenguaje.
Enlazado de ficheros
• Permite mantener código específico de cada plataforma.
• Por contra, multiplica las ramas a mantener.
Compilación Condicional
• Código manejado común a las plataformas.
Portable Class Library
![Page 61: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/61.jpg)
dotNet Málaga
MVVM
Vista VistaModelo
Modelo
Modelo
MainView.Xaml
MainViewModel.c
s
Data Binding
Comandos
Interfaz de Usuario Lógica de Negocio
Lógica de Negocio
Lógica de Presentación
![Page 62: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/62.jpg)
dotNet Málaga
¿Y todo esto con una App “real”?
![Page 63: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/63.jpg)
dotNet Málaga
![Page 64: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/64.jpg)
dotNet Málaga
Utilizando Xamarin Classic
![Page 65: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/65.jpg)
dotNet Málaga
COMPARATIVA DE PLATAFORMAS MÓVILES XAMARIN
IDE
LenguajeVistas
iOS Android Windows Phone
Visual Studio
Visual Studio
Visual Studio
C# C# C#
Storyboard AXML XAMLMVVM MVVM MVVM
Patrón diseño
![Page 66: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/66.jpg)
dotNet Málaga
MVVM
View
ViewModel
Model
get/set PropiedadesComandos
Notifica cambios
C#
Models
ViewView
ViewModel
ViewModel
ModelM
odel
Cross PlatformEspecífico
de la Plataforma
![Page 67: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/67.jpg)
dotNet Málaga
PORTABLE CLASS LIBRARY
•1 Librería•Multiples Platformas•Incluyendo:• Xamarin.Android• Xamarin.iOS
![Page 68: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/68.jpg)
dotNet Málaga
CARACTERÍSTICAS DE UNA PORTABLE CLASS LIBRARY• Código compartido centralizado• Se depura igual que si el código estuviese en un
Proyecto específico.
• Compartir Proyecto/Assembly• NuGet
![Page 69: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/69.jpg)
dotNet Málaga
MVVMCross & PCL
View
ViewModel
Model
PropiedadesComandos
Notifica cambios
C#
Model
ViewView
ViewModel
ViewModel
ModelM
odel
Cross Platform -PCLEspecífico
de Plataforma
![Page 70: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/70.jpg)
DEMODEMODEMO
Nuestra App con MVVMCross
![Page 71: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/71.jpg)
dotNet Málaga
Utilizando Xamarin.Forms
![Page 72: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/72.jpg)
dotNet Málaga
COMPARATIVA DE PLATAFORMAS MÓVILES XAMARIN
IDE
LenguajeVistas
iOS Android Windows Phone
Visual Studio
Visual Studio
Visual Studio
C# C# C#
XAML XAML XAMLMVVM MVVM MVVM
Patrón diseño
![Page 73: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/73.jpg)
dotNet Málaga
ARQUITECTURA DE APPS CON XAMARIN.FORMS
View
ViewModel
Model
PropiedadesComandos
Notifica cambios
C#
Model
ViewView
ViewModel
ViewModel
ModelM
odel
Cross Platform –PCL o Shared
![Page 74: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/74.jpg)
DEMODEMODEMO
Ahora Xamarin.Forms
![Page 75: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/75.jpg)
dotNet Málaga
UTILIZANDO NATIVO
Web Services
Web Services Backend C#
App
Services Services Services
View View View
ViewModel Controller Controller
App App
Web Services Backend C# Web Services Backend C#
![Page 76: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/76.jpg)
dotNet Málaga
UTILIZANDO XAMARIN CLASSIC
Web Services
Web Services Backend C#
App
Services
Services Services Services
Model
View Model
View View View
![Page 77: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/77.jpg)
dotNet Málaga
UTILIZANDO XAMARIN.FORMS
Web Services
Web Services Backend C#
App
Services
Services (Implementation) Services (Implementation) Services (Implementation)
Model
View Model
View (Custom Render) View (Custom Render) View (Custom Render)
View
![Page 78: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/78.jpg)
dotNet Málaga
CONCLUSIONES RÁPIDAS
1. Siendo ordenado y siguiendo una serie de patrones podemos compartir entre el 65% y el 95% del código de una App móvil multiplataforma.
2. Xamarin.Forms no es siempre la solución más ideal dependiendo de las características del Proyecto.
3. No existe la abstracción absoluta. Sigue siendo necesario conocer características de cada plataforma.
![Page 79: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/79.jpg)
dotNet Málaga
Preguntas y respuestas.
¿Dudas?
P&R
![Page 80: Introducción a Xamarin utilizando MVVMCross](https://reader035.vdocuments.mx/reader035/viewer/2022062820/58a3e9511a28ab272e8b50d7/html5/thumbnails/80.jpg)
Introducción a Xamarin Classic (MVVMCross)dotNet MálagaJavier Suárez