SlideShare ist ein Scribd-Unternehmen logo
1 von 94
Downloaden Sie, um offline zu lesen
Abril 2016 Diplomado Dispositivos Móviles 1
Módulo de Xamarin Forms
Parte 1: Introducción a Xamarin
Abril 2016 Diplomado Dispositivos Móviles 2
Sorey García (@soreygarcia)
Consultora en Movilidad
y Freelancer XAML
Ingenieria Informatica
Politécnico Jaime Isaza Cadavid
Especialista en Desarrollo de Software
Universidad EAFIT
Docente de Cátedra
Institución Universitaria Pascual Bravo
Co-fundadora de la comunidad de
Desarrolladores Avanet y Codies
Instructora
Abril 2016 Diplomado Dispositivos Móviles 3
Abril 2016 Diplomado Dispositivos Móviles 4
Commercial LicenseOpen Source License / Free available
4
From .NET to Xamarin
Windows
.NET Framework
Linux
Mono
iOS
MonoTouch
Android
Mono for Android
iOS
Xamarin.iOS
Android
Xamarin.Android
Abril 2016 Diplomado Dispositivos Móviles 5
Silo
Approach
Crear una App
multiples
veces
Abril 2016 Diplomado Dispositivos Móviles 6
Retos del desarrollo nativo
• Mac OS X
• XCode
• Objective-C
• Swift
• iOS SDK
• Apple Tools
• OS
• Eclipse or Android Studio
or…
• Java
• Android SDK
• SDK Tools
• Windows OS
• Visual Studio
• C#
• .NET Framework
• Windows Phone SDK
Abril 2016 Diplomado Dispositivos Móviles 7
Write Once,
Run Anywhere
Approach
Mínimo común
denominador App Generation
Abril 2016 Diplomado Dispositivos Móviles 8
Retos del desarrollo híbrido
• Mínimo común denominador
• Fragmentación del Browser
• Desarrollo y diseño para 1 plataforma,
afecta las experiencias de usuario
Abril 2016 Diplomado Dispositivos Móviles 9
Abril 2016 Diplomado Dispositivos Móviles 10
Algunas opciones
Abril 2016 Diplomado Dispositivos Móviles 11
Abril 2016 Diplomado Dispositivos Móviles 12
Xamarin
Approach
Comparte
código nativo
Abril 2016 Diplomado Dispositivos Móviles 13
Comparaciones por plataforma
Abril 2016 Diplomado Dispositivos Móviles 14
@implementation MSViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)OnButtonDown:(id)sender {
UIAlertView* view =
[[UIAlertView alloc]init];
[view setTitle:@"Hello World"];
[view setMessage: @"How are you?”];
[view addButtonWithTitle:@"OK"];
[view show];
}
@end
public partial class iOSAppViewController :
UIViewController
{
public iOSAppViewController (IntPtr handle) :
base (handle){
}
public override void ViewDidLoad (){
base.ViewDidLoad ();
}
partial void OnButtonDown (UIButton sender)
{
UIAlertView view = new UIAlertView();
view.Title = "Hello World" ;
view.Message = "How are you? " ;
view.AddButton ("OK");
view.Show();
}
iOS
Abril 2016 Diplomado Dispositivos Móviles 15
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Button myBtn = (Button) this.findViewById( R.id.clickMe);
myBtn.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new
AlertDialog.Builder(MyActivity.this) ;
builder.setTitle( "Hello World")
.setMessage("How are you?")
.setPositiveButton( "OK", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface
dialogInterface, int i) {
dialogInterface.dismiss();
}}) .show();
}});
}
}
[Activity (Label = "AndroidApp", MainLauncher = true, Icon =
"@drawable/icon")]
public class MainActivity : Activity {
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button> (Resource.Id.me);
button.Click += delegate {
AlertDialog.Builder builder = new AlertDialog.Builder
(this );
AlertDialog dialog = null ;
builder.SetTitle ( "Hello World")
.SetMessage ( "How are you")
.SetPositiveButton( "OK" , delegate {
dialog.Dismiss(); } );
dialog = builder.Show ();
} ;
}
}
Android
Abril 2016 Diplomado Dispositivos Móviles 16
¿Por qué nativo?
Xamarin genera experiencias nativas.
Native User Interfaces Native API Access Native Performance
Abril 2016 Diplomado Dispositivos Móviles 17
Windows APIs
100% coverage
Abril 2016 Diplomado Dispositivos Móviles 18
… or iOS APIs
100% coverage
Abril 2016 Diplomado Dispositivos Móviles 19
… or Android APIs
100% coverage
Abril 2016 Diplomado Dispositivos Móviles 20
Compilación Nativa
Xamarin.iOS does full Ahead Of Time (AOT)
compilation to produce an ARM binary for
Apple’s App Store.
Xamarin.Android takes advantage of Just In
Time (JIT) compilation on the Android
device.
Abril 2016 Diplomado Dispositivos Móviles 21
Cualquier cosa que pueda hacerse en Objective-C or
Java puede hacerse en C# con Xamarin usando Visual
Studio o Xamarin Studio
Abril 2016 Diplomado Dispositivos Móviles 22
Abril 2016 Diplomado Dispositivos Móviles 23
Share Code: Portable Class Libraries
Abril 2016 Diplomado Dispositivos Móviles 24
NuGet
Abril 2016 Diplomado Dispositivos Móviles 25
Shared Projects
Abril 2016 Diplomado Dispositivos Móviles 26
Linked
Files
Compiler
Directives
Abril 2016 Diplomado Dispositivos Móviles 27
Separación de responsabilidades
UserInterface
AppLogic
General Model-View-ViewModel (MVVM)
Abril 2016 Diplomado Dispositivos Móviles 28
Abril 2016 Diplomado Dispositivos Móviles 29
Xamarin + Xamarin Forms
Abril 2016 Diplomado Dispositivos Móviles 30
 40+ Pages, Layouts, and Controls
 Build from code behind or XAML
 Two-way Data Binding
 Navigation
 Animation API
 Dependency Service
 Messaging Center
Xamarin.Forms
Shared UI Code
Abril 2016 Diplomado Dispositivos Móviles 31
Xamarin’s Unique Approach
Shared C# codebase • 100% native API access • High performance
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile C# Server
Linux/Mono
CoreCLRAzure
Shared C# Client/Server
Xamarin.Forms: Interfaces Nativas con Código Compartido
Use a single API to generate native, platform-
specific user interfaces
At runtime, each Xamarin.Forms page and its
controls are mapped to platform-specific native
UI elements
Abril 2016 Diplomado Dispositivos Móviles 33
Pages
Abril 2016 Diplomado Dispositivos Móviles 34
Layouts
Abril 2016 Diplomado Dispositivos Móviles 35
Controls
ActivityIndicator BoxView Button DatePicker Editor
Entry Image Label ListView Map
OpenGLView Picker ProgressBar SearchBar Slider
Stepper TableView TimePicker WebView EntryCell
ImageCell SwitchCell TextCell ViewCell
Abril 2016 Diplomado Dispositivos Móviles 36
Cells
• EntryCell
• SwitchCell
• TextCell
• ImageCell
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/cells/
Abril 2016 Diplomado Dispositivos Móviles 37
Controles de terceros
Abril 2016 Diplomado Dispositivos Móviles 38
http://www.genymotion.com/
Emuladores
Abril 2016 Diplomado Dispositivos Móviles 39
Plataformas Soportadas Xamarin Forms
• Android 4.0.3 o Superior
• iOS 6.1 o Superior
• Windows Phone y Windows 8.1
• Windows 10 UWP
Abril 2016 Diplomado Dispositivos Móviles 40
Microsoft adquirió Xamarin
Abril 2016 Diplomado Dispositivos Móviles 41
Xamarin Test Cloud
Abril 2016 Diplomado Dispositivos Móviles 42
Xamarin Insights
Abril 2016 Diplomado Dispositivos Móviles 43
Ventajas y Desventajas
VENTAJAS
• Se escribe el código solo una vez
• Mantiene la experiencia de usuario propia de cada plataforma.
• Se permite el acceso a funciones nativas a través de Inyección de Dependencias.
• No es necesario conocer todo acerca de las plataformas nativas
• Puedes crear código XAML y aprovechar la potencia de MVVM
DESVENTAJAS
• Es un poco nuevo así que es necesario adaptarse a lo que existe, lo que limita en cuanto a
crear UX que demande demasiado esfuerzo gráfico.
Xamarin.Forms se recomienda para
• Start learning platform specifics – in .NET.
• Prototype
• Data-driven, task-oriented
• multi-platform apps
• Recommended for:
• Lists
• Item selections
• Change properties
• Update backend
NO se recomienda en los siguientes casos
• Complex/customized interfaces -
nuanced experiences
• Android Material Design, iOS
transitions
• Extensive platform-specific capability
• Slow-mo camera, fingerprint
scanner (iOS 6)
• Not Recommended for:
• UI-intensive apps with complex
gestures
Abril 2016 Diplomado Dispositivos Móviles 46
• Mejoras de integración con iOS 9 y Android 6
• Material Design (AppCompat)
• Optimización del rendimiento
• XAML pre compilado
• Windows 10 (UWP) Preview
• Nuevos gestos
• Efectos, templates…
Xamarin.Forms 2.0
Abril 2016 Diplomado Dispositivos Móviles 47
evolve.xamarin.com
Abril 2016 Diplomado Dispositivos Móviles 48
Módulo de Xamarin Forms
Parte 2: Consideraciones de Publicación
Abril 2016 Diplomado Dispositivos Móviles 49
XAML y C# Everywhere
La mayoría de recursos en
internet enseñan Xamarin
Forms con Code Behind.
Sin embargo la
recomendación es
aprender y trabajar con
XAML y aprovechar su
enfoque a la separación de
responsabilidades entre el
diseño y la codificación.
Abril 2016 Diplomado Dispositivos Móviles 50
Centros de Desarrollo
Abril 2016 Diplomado Dispositivos Móviles 51
Apple Developer Center
• Cuenta de Desarrollador o Compañia: 99 USD Anuales
• Cuenta Empresarial: 299 USD Anuales
• En el Apple Developer Center se gestiona la cuenta, certificados y dispositivos
• En iTunes Connect se publican las aplicaciones
• Invitaciones a beta tester via correo desde iTunes Connect subiendo un Bundle a
TestFlight
• Nivel de complejidad: Alto
• Nivel de exigencia en calidad: Alta
• Tiempo de publicación: Días (Entre 7 y 12)
• http://appreviewtimes.com/
Abril 2016 Diplomado Dispositivos Móviles 52
Windows Store y Windows Phone Store
Windows Phone Store y Windows Store
• 19 USD de por vida para desarrolladores
• 99 USD de por vida para compañías
• Invitaciones a beta tester via correo subiendo un paquete.
• En el Developer Benefits Center se obtienen beneficios adicionales con suscripciones
• Nivel de Complejidad: Medio
• Nivel de exigencia en calidad: Baja
• Tiempo de publicación: Horas máximo 1 o 2 días, en revisiones posteriores pueden pedirte
mejorar la aplicación o puede ser removida de la tienda.
Abril 2016 Diplomado Dispositivos Móviles 53
Play Store Developer Center
Google Play Store
• 25 USD de por vida
• En Google Play Store de gestionan y publican las aplicaciones
• Se puede enviar versiones Beta a grupos de usuarios
• Nivel de complejidad: Bajo
• Nivel de exigencia en calidad: Baja
• Tiempo de publicación: Horas
Abril 2016 Diplomado Dispositivos Móviles 54
Herramientas y Modos de Ejecución
Abril 2016 Diplomado Dispositivos Móviles 55
Herramientas
Xamarin Studio en MAC o Visual Studio 2015 Update 2 en Windows
Android
• Android SDK y APIs necesarias según soporte que se dese dar
• Dispositivo, Visual Studio Emulator for Android, GenyMotion o Android Player
Windows Phone y Windows
• Windows SDK
• Dispositivo o Emuladores del SDK
iOS
• Xcode
• Dispositivo, Emuladores de Xcode
• Xamarin instalado en el MAC aunque se use Windows
Abril 2016 Diplomado Dispositivos Móviles 56
Debug y Release
Android
• No requiere de ninguna consideración para ejecutar en ambos modos.
• Para entregar un APK de prueba se necesita generar un KeyStore
• Solo se pueden publicar paquetes en release
Windows Phone y Windows
• No requiere de ninguna consideración para ejecutar en ambos modos.
• Para generar el appx de prueba se necesita firmar los paquetes con Visual
• Las apps Universales de Windows 10 están aún en Preview
• Para probar paquetes en dispositivos, se debe desbloquear el dispositivo para desarrollo
• Solo se pueden publicar paquetes en release
Abril 2016 Diplomado Dispositivos Móviles 57
Debug y Release
iOS
• Requiere cuenta de desarrollador autorizada
• Requiere configurar certificados de desarrollo bajados desde del developer center e
instalados en el KeyChain para Debug o Adhoc / AppStore.
• Se requiere generar el AppId de la aplicación en desarrollo
• Para generar IPA (Paquetes en Adhoc para prueba en dispositivos) se requiere registrar el
equipo en la cuenta de desarrollador y habilitar el dispositivo en el certificado especifico de
desarrollo o distribución
• Solo se pueden publicar paquetes generados en modo AppStore.
Abril 2016 Diplomado Dispositivos Móviles 58
APIs por Plataforma
(Mapas y Notificaciones)
Abril 2016 Diplomado Dispositivos Móviles 59
APIs para Mapas Nativos
Google
• Los mapas requieren configurar el SHA del Key Store en la consola de
desarrolladores y solicitar las llaves para Debug y para Release para Google
Maps Android API v2
• Las notificaciones requieren configurar una llave para Google Cloud
Messaging for Android
• Consola de desarrolladores: https://code.google.com/apis/console/
Abril 2016 Diplomado Dispositivos Móviles 60
APIs para Mapas Nativos
iOS
• Los mapas no requieren nada adicional
• Se requiere habilitar el certificado de Notificaciones Push para el AppId
correspondiente a la app que se esta desarrollando uno para Debug y otro
para Adhoc / AppStore
Windows Phone y Windows
• Los mapas requieren una llave para mapas de Bing >
https://www.bingmapsportal.com/
• Las notificaciones requieren de llaves generadas en los Store para cada una
de las aplicaciones publicadas.
Abril 2016 Diplomado Dispositivos Móviles 61
Azure Service Bus
Debido a la complejidad del envió de notificaciones que tiene cada
plataforma existen servicios como el de Azure Service Bus que centraliza los
envíos de notificaciones.
• iOS: Debe configurarse el certificado generado en la máquina donde se está compilando
para publicar.
• Android: Debe configurarse la llave entregada en la consola de desarrolladores
• Windows Phone: debe configurarse la llave entregada en el Windows Phone Store.
Abril 2016 Diplomado Dispositivos Móviles 62
Base de datos local
Abril 2016 Diplomado Dispositivos Móviles 63
SQLite
• SQLite provee una base de datos local por plataforma.
• Esta base de datos es almacenada en el sistema de archivos.
• SQLite está soportada nativamente por iOS y Android pero no en Windows Phone o
Windows. Debe instalarse Sqlite for Windows y Sqlite for Windows Phone
Abril 2016 Diplomado Dispositivos Móviles 64
SQLite.NET Async (ORM)
Abril 2016 Diplomado Dispositivos Móviles 65
Custom Controls, Renderers y Bindings
Abril 2016 Diplomado Dispositivos Móviles 66
Controles Extendidos y Custom Controls
• El comportamiento de los controles puede ser extendido creando clases
que heredan de los controles base y añadiendo Propiedades de
Dependencia, un concepto usado en el desarrollo con XAML que permite
crear propiedades que pueden ser enlazadas con orígenes de datos
(Bindings XAML).
Abril 2016 Diplomado Dispositivos Móviles 67
Renderers y Custom Renderers
• Los renderers son clases que provee Xamarin, para acceder a los miembros
nativos de los controles de Forms y alterar así la forma como estos
controles se dibujan. Cada control de Forms tiene su renderer excepto los
Layouts.
• Es posible querer renderizar o presentar un control que aún no ha sido
incluido en Xamarin Forms pero que se desea usar.
• Para esto existe un renderer genérico ViewRenderer a través del cual se
pueden realizar las implementaciones de estos controles.
• Para que estos controles tengan datos que provengan de Bindings debe
asociarse este concepto con el visto previamente Controles Extendidos y
Custom Controls.
Abril 2016 Diplomado Dispositivos Móviles 68
Bindings
Xamarin provee de los bindings necesarios para acceder a las APIs base de
cada plataforma desde C#, sin embargo hay empresas de terceros que
proveen controles o funcionalidades que son populares.
La manera de acceder a estas es crear nuestros propios bindings si es que no
existen ya en la tienda de componentes.
Es necesario aprender como se hace esto en cada plataforma en particular.
Android
• http://developer.xamarin.com/guides/android/advanced_topics/java_integ
ration_overview/binding_a_java_library_%28.jar%29/
iOS
• http://developer.xamarin.com/guides/ios/advanced_topics/binding_objecti
ve-c/
Abril 2016 Diplomado Dispositivos Móviles 69
Módulo de Xamarin Forms
Parte 3: Introducción a XAML y MVVM
Abril 2016 Diplomado Dispositivos Móviles 70
Conceptos básicos
Abril 2016 Diplomado Dispositivos Móviles 71
• XAML es un lenguaje declarativo, basado en
XML y pensado para escribir la interface gráfica
de una aplicación de forma textual y ordenada.
• Una característica muy importante de XAML es
que todos los objetos qué definamos en el,
automáticamente son instanciados por el CLR y
creados como objetos accesibles desde código,
sin necesidad de realizar de nuevo la declaración
de los mismos en Code Behind, todo gracias al
mecanismo de las Clases Parciales.
• Su principal objetivo es la separación de
responsabilidades.
¿Qué es XAML?
Abril 2016 Diplomado Dispositivos Móviles 72
• Los conceptos que permiten esta separación de responsabilidades en
XAML son en especial los bindings y los comandos, los cuales nos
permiten respectivamente “enlazar” datos y acciones a nuestras vistas.
• Ambos dependen del otro concepto a manejar que se conoce como el
contexto de datos, para el cual se requiere una adecuada comprensión
de los conceptos de orientación a objetos.
• Los convertidores por su parte nos ayudan a trasformar un dato y
mostrar en la vista el resultado de dicha transformación.
XAML
Abril 2016 Diplomado Dispositivos Móviles 73
• Es un patrón de diseño creado en 2005 y es una evolución de MVC y MVP
usado especialmente para aplicaciones basadas en XAML.
• La traducción de sus iniciales es Modelo Vista – Vista Modelo.
• Su principal propósito y beneficio está en la separación de responsabilidades
a nivel de la presentación de nuestras aplicaciones.
• Las implementaciones de MVVM son diversas y dependen básicamente de
las necesidades que tenga la aplicación o el desarrollo en sí mismo.
• Existen muchos frameworks disponibles para implementar MVVM en
aplicaciones XAML, su elección es personal y opcional. El framework más
más usado es MVVM Light.
¿Qué es MVVM?
Abril 2016 Diplomado Dispositivos Móviles 74
Separación de responsabilidades
UserInterface
AppLogic
General Model-View-ViewModel (MVVM)
Abril 2016 Diplomado Dispositivos Móviles 75
MVVM Simple
Model
View
ViewModel
Data Bindings
One way
One time
Two way
Commands
Interfaz de Usuario
Clases que representan las
fuentes de datos
Estructuras que
representan los contextos
de datos de las pantallas y
el que permiten el acceso a
la logica de negocio
Abril 2016 Diplomado Dispositivos Móviles 76
Vistas
Aplicaciones de escritorio, web forms
Caja de texto
Etiqueta
Form.cs (Code behind C#)
Form.designer.cs (C#)
Clase
Form
Usar code behind en clases parciales,
es el escenario “típico o más sencillo”
de un desarrollador .NET.
Aplicaciones XAML
Caja de texto
Etiqueta
MainPage.xaml
(Lenguaje declarativo XAML)
MainPage.xaml.cs (Code behind C#)
Clase
MainPage
Nuestra meta para hacer
código portable es usar
code hind al mínimo
posible. En la demo de
hecho cero code behind.
Abril 2016 Diplomado Dispositivos Móviles 77
Usando XAML se pueden crear de forma declarativa los
mismos elementos gráficos que se crearían en código
Vistas
<StackLayout>
<TextBox/>
<Button/>
</StackLayout>
StackLayout stackPanel = new StackLayout();
Entry textBox = new Entry();
stackPanel.Children.Add(textBox);
Button button = new Button();
stackPanel.Children.Add(button);
Abril 2016 Diplomado Dispositivos Móviles 78
Ambos escenarios permiten acceder a los controles de la pantalla como
miembros de la clase que los contiene es decir
this.txtMensaje.Text = “Hola”;
Y crear event handlers para poner el código relacionado a una interacción
del usuario, por ejemplo el click de un botón
private void Button_Click(object sender, RoutedEventArgs e)
{ //Code }
Sin embargo como ya lo dijimos, está no es la mejor práctica para hacer
código portable y reusable.
Vistas
Abril 2016 Diplomado Dispositivos Móviles 79
Bindings y Contextos de datos
Los bindings son textos declarativos que
definen a que propiedad o comando del
contexto de datos está asociado un
atributo de un elemento XAML.
Los contextos de datos, no son más que
instancias de clases.
Como fuente de los bindings también
pueden usarse recursos XAML
declarados a nivel de la App o en algún
diccionario de recursos.
Guardar cambios
Nombre
Editar perfil
Apellido
Abril 2016 Diplomado Dispositivos Móviles 80
Entendiendo los bindings de forma simple
12:38
recordar
*****
iniciar sesión
password
soreygarcia
usuario
Text={Binding UserName}
Password={Binding Password}
Command={Binding StartCommand}
BindingContext={Binding Usuario, Source={StaticResource Locator}}
BindingContext > Instancia de una clase, de una Vista Modelo
Abril 2016 Diplomado Dispositivos Móviles 81
XAML sin bindings
<StackLayout x:Name="ContentPanel" Grid.Row="1" >
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Button Content="Button"/>
</StackLayout>
Esta es la declaración XAML de la vista que se presento en la diapositiva
anterior creada en Windows Phone.
Abril 2016 Diplomado Dispositivos Móviles 82
XAML con bindings
<StackLayout x:Name="ContentPanel" Grid.Row="1">
<Label Text="TextBlock"/>
<Entry Height="72" Text="{Binding Nombre, Mode=TwoWay}"/>
<Label Text="TextBlock"/>
<TextBox Height="72" Text="{Binding Apellido, Mode=TwoWay}"/>
<Button Content="Button"/>
</StackLayout>
Esta es la declaración XAML usando bindings. Lo que hay que entender de esto es que los
bindings de los Textbox indican que esperamos que el DataContext del StackPanel tengan las
propiedades Nombre y Apellido.
Abril 2016 Diplomado Dispositivos Móviles 83
¿De donde van a salir esos datos?
<Grid x:Name="LayoutRoot" Background="Transparent"
BindingContext="{Binding Usuario, Source={StaticResource SampleDataSource}}">
<Grid x:Name="ContentPanel">
<!– Aquí van los demás elementos de nuestra vista -->
</Grid>
</Grid>
Si vemos el contenedor de nuestro StackLayout vemos que tiene asignados dos contextos, uno
en tiempo de diseño y otro en tiempo de ejecución.
El contexto del contenedor interno, espera que el contexto del contenedor más externo tenga
alguna propiedad con el nombre Persona.
Abril 2016 Diplomado Dispositivos Móviles 84
Vistas Modelos
Las Vistas Modelos
son las clases que al
instanciarse van a
servir como
contextos de datos a
nuestras vistas.
Aprender a definir las
Vistas Modelo, es
más importante de lo
que parece.
class ViewModels
ClueViewModel
«property»
+ Name(): string
+ Value(): string
BindableBase
MainViewModel
- jsonService: IJsonService
- navigationService: INavigationService
- phoneService: IPhoneService
- randomGen: Random
- LoadPlayers(): void
+ MainViewModel(INavigationService, IPhoneService)
~ SufflePlayers(): void
«property»
+ Players(): ObservableCollection<PlayerViewModel>
+ SelectedPlayer(): PlayerViewModel
BindableBase
PlayerViewModel
- navigationService: INavigationService
- phoneService: IPhoneService
- wasDiscovered: bool
- Discover(): void
- Guess(): void
+ PlayerViewModel(INavigationService, IPhoneService)
«property»
+ Answer(): string
+ Clues(): ObservableCollection<ClueViewModel>
+ DiscoverCommand(): ICommand
+ GuessCommand(): ICommand
+ Id(): int
+ Name(): string
+ ParentViewModel(): MainViewModel
+ Photo(): string
+ WasDiscovered(): bool
http://blog.soreygarcia.me/2013/12/imaginando-los-prototipos-y-las-vistas.html
Abril 2016 Diplomado Dispositivos Móviles 85
Comandos
Events
Event
HandlersCommanding
Los comandos se enlazan a las vistas a través de bindings y dependen del
contexto de datos pero están enfocados a ejecutar acciones. Su
implementación se hace usando la interfaz ICommand
Abril 2016 Diplomado Dispositivos Móviles 86
Comandos
Esta es la asociación en XAML usando bindings del uso de un comando, como
vemos la vista no tiene idea de cual es la implementación concreta del método,
esta es relativa al contexto que le sea asignado.
<StackLayout x:Name="ContentPanel" Grid.Row="1" >
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Label Text="TextBlock"/>
<Entry Height="72" Text="TextBox"/>
<Button Content="Button" Command="{Binding GuardarPerfilCommand}"/>
</StackLayout>
Abril 2016 Diplomado Dispositivos Móviles 87
Servicios
Otra buena práctica es no colocar lógica compleja en las vistas modelo, aunque ellas son las
receptoras de los comandos, una práctica simple (en este nivel intermedio) es usar clases que
llamaremos servicios, para ejecutar la lógica particular de la app o del negocio.
Abril 2016 Diplomado Dispositivos Móviles 88
http://blog.soreygarcia.me/2014/07/xaml-para-principiantes-fordummies.html
Abril 2016 Diplomado Dispositivos Móviles 89
Android iOS
Cross (Xamarin Forms)
PCL (Logic)
Windows
+
C
o
m
p
a
r
t
i
d
o
CalendarService CalendarService CalendarService
Xamarin Forms
NavigationService
MainViewModel
ApiService
DepencyCo
ntaider
ICalendarSer
vice
LocalDataService
DbConnectionService DbConnectionService
IDbConnecti
onService
Abril 2016 Diplomado Dispositivos Móviles 90
Pantallas
(XAML)
ViewModels
(Origen de los
datos)
Servicios
InstancelLocator
(Dependency
Injection)
Resources
Framework
MVVM
(MVVM Light,
MVVM Cross,
*
Infrastructure.Commo
n)
ApiService
LocalDataServic
e
SettingsService
NavigationServi
ce
NetworkService
CrossService
DialogService
Models
Abril 2016 Diplomado Dispositivos Móviles 91
MVVM Light
Pantallas (XAML)
C
o
n
t
r
o
l
e
s
V
i
e
w
M
o
d
e
l
s
Commands
Bindings
Binding
Name
Property Name
Method Login
S
e
r
v
i
c
i
o
s
Data
Login
Binding
ValidationErrors
[KeyName]
Binding
LoginCommand
StaticResource
ThemeColor
Recursos
(Resource Dictionary)
ViewModelLocator
MainViewModel
Patterns & Practices
ServiceLocator
Arquitectura
Con MVVM Light
Autofac (Contenedor de dependencias)
ServiceLocator
ApiService
LocalDataService
DataTemplates
Colores
Fuentes
Abril 2016 Diplomado Dispositivos Móviles 92
Material Recomendado
Foros de Xamarin
BugZilla
VERSION FINAL
https://blogs.msdn.microsoft.com/microsoft_press/2016/03/31/fre
e-ebook-creating-mobile-apps-with-xamarin-forms/
OFFICIAL SITE
https://developer.xamarin.com/
ALGUNOS VIDEOS
https://www.youtube.com/user/soreygarcia
Abril 2016 Diplomado Dispositivos Móviles 93
Free 30 Day Trial - xamarin.com/university
Unrivaled Mobile
Development
Training
Live unlimited mobile development training from
mobile experts, in your time-zone, on your
schedule, and as often as you'd like.
Abril 2016 Diplomado Dispositivos Móviles 94
¿Preguntas?
Sorey García
soreygarcia@gmail.com | @soreygarcia | blog.soreygarcia.me

Weitere ähnliche Inhalte

Was ist angesagt?

Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sqlnnakasone
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de usoSaul Mamani
 
Diagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaDiagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaRobert Rodriguez
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 
03 Modelo Relacional
03 Modelo Relacional03 Modelo Relacional
03 Modelo RelacionalKudos S.A.S
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
Unidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióNUnidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióNSergio Sanchez
 
Mapa conceptual uml z1-
Mapa conceptual uml  z1-Mapa conceptual uml  z1-
Mapa conceptual uml z1-karlanm07
 
Sesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuenciaSesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuenciaJulio Pari
 

Was ist angesagt? (20)

Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sql
 
Rational rose
Rational roseRational rose
Rational rose
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
DIAGRAMAS DE CLASE
DIAGRAMAS DE CLASEDIAGRAMAS DE CLASE
DIAGRAMAS DE CLASE
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Diagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, AsistenciaDiagrama de actividades inscripcion, evaluacion, Asistencia
Diagrama de actividades inscripcion, evaluacion, Asistencia
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
03 Modelo Relacional
03 Modelo Relacional03 Modelo Relacional
03 Modelo Relacional
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Unidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióNUnidad 8 Diagramas De InteraccióN
Unidad 8 Diagramas De InteraccióN
 
Modelo entidad
Modelo entidadModelo entidad
Modelo entidad
 
Diagrama de estado
Diagrama de estadoDiagrama de estado
Diagrama de estado
 
Mapa conceptual uml z1-
Mapa conceptual uml  z1-Mapa conceptual uml  z1-
Mapa conceptual uml z1-
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Sesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuenciaSesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuencia
 

Andere mochten auch

NetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilNetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilSorey García
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...Sorey García
 
SVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra HololensSVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra HololensJavier Suárez Ruiz
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades XamarinJavier Suárez Ruiz
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersJavier Suárez Ruiz
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinJavier Suárez Ruiz
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
Presentación en el Mobile Day
Presentación en el Mobile DayPresentación en el Mobile Day
Presentación en el Mobile Dayenriqueaguilar
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Hendrik Ebbers
 
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossDesarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossIvan Rodrigo Toledo Ivanovic
 
Sistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De SeguridadSistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De SeguridadChema Alonso
 
SydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin FormsSydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin FormsAlec Tucker
 
Xamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin FormsXamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin FormsSubodh Pushpak
 
Modern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik WebinarModern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik WebinarSam Basu
 
Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.Jasmin G.
 

Andere mochten auch (20)

NetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvilNetConfUY: Maximizando la productividad del desarrollo móvil
NetConfUY: Maximizando la productividad del desarrollo móvil
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
 
Testing de Apps Xamarin
Testing de Apps XamarinTesting de Apps Xamarin
Testing de Apps Xamarin
 
SVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra HololensSVQDC - Desarrollo de Apps apra Hololens
SVQDC - Desarrollo de Apps apra Hololens
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarin
 
dotNetMálaga - Taller Xamarin
dotNetMálaga - Taller XamarindotNetMálaga - Taller Xamarin
dotNetMálaga - Taller Xamarin
 
Servicios Xamarin
Servicios XamarinServicios Xamarin
Servicios Xamarin
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom Renders
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones Xamarin
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Presentación en el Mobile Day
Presentación en el Mobile DayPresentación en el Mobile Day
Presentación en el Mobile Day
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
 
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossDesarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCross
 
Sistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De SeguridadSistemas De Evaluacion De Seguridad
Sistemas De Evaluacion De Seguridad
 
SydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin FormsSydMobNet July 2014: Xamarin 3 & Xamarin Forms
SydMobNet July 2014: Xamarin 3 & Xamarin Forms
 
Xamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin FormsXamarin day9 - Advance Xamarin Forms
Xamarin day9 - Advance Xamarin Forms
 
Modern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik WebinarModern .NET Apps - Telerik Webinar
Modern .NET Apps - Telerik Webinar
 
Xamarin Forms
Xamarin FormsXamarin Forms
Xamarin Forms
 
Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.Auditoria en informática, Organización, Planes y Estructuras.
Auditoria en informática, Organización, Planes y Estructuras.
 
Seguridad informatica infodasa
Seguridad informatica infodasaSeguridad informatica infodasa
Seguridad informatica infodasa
 

Ähnlich wie Introducción a Xamarin Forms con XAML

Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Luis Beltran
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier Suárez Ruiz
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Luis Beltran
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesJosué Yeray Julián Ferreiro
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxErickCarlos14
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles RAUL Velez
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistencoenriqueaguilar
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxLuis Beltran
 
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Luis Beltran
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaJavier Suárez Ruiz
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsJavier Suárez Ruiz
 
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...Luis Fernando Aguas Bucheli
 
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdfIntroduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdfEliasChoque14
 

Ähnlich wie Introducción a Xamarin Forms con XAML (20)

primera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptxprimera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptx
 
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móviles
 
Semana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptxSemana 02 Aplicacion Movil.pptx
Semana 02 Aplicacion Movil.pptx
 
Reconnect2015
Reconnect2015Reconnect2015
Reconnect2015
 
6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles 6 Lenguajes para dispositivos móviles
6 Lenguajes para dispositivos móviles
 
Azure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec TianguistencoAzure Storage y Xamarin - Tec Tianguistenco
Azure Storage y Xamarin - Tec Tianguistenco
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
 
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
Evento Bolivia - Fundamentos de Xamarin - Desarrollo de apps moviles multipla...
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event Sevilla
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
 
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
6- Unidad 1: Introducción a la Plataforma .NET-1.3. Aplicaciones en C# .net (...
 
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdfIntroduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
Introduccion-a-Xamarin-y-Xamarin.Forms_1.pdf
 
Visual Studio App Center
Visual Studio App CenterVisual Studio App Center
Visual Studio App Center
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 

Mehr von Sorey García

Mision inspiración para docentes
Mision inspiración para docentesMision inspiración para docentes
Mision inspiración para docentesSorey García
 
WIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaWIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaSorey García
 
Internet de las Cosas y Netduino
Internet de las Cosas y NetduinoInternet de las Cosas y Netduino
Internet de las Cosas y NetduinoSorey García
 
Misión: Inspiración
Misión: InspiraciónMisión: Inspiración
Misión: InspiraciónSorey García
 
Tendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialTendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialSorey García
 
[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura MedellínSorey García
 
MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences Sorey García
 
GWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesGWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesSorey García
 
Similitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSimilitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSorey García
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Sorey García
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Sorey García
 
Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Sorey García
 
Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Sorey García
 
Windows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresWindows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresSorey García
 
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptJSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptSorey García
 
Windows Phone 8 en Campus Party
Windows Phone 8 en Campus PartyWindows Phone 8 en Campus Party
Windows Phone 8 en Campus PartySorey García
 
Introducción a XAML y MVVM
Introducción a XAML y MVVMIntroducción a XAML y MVVM
Introducción a XAML y MVVMSorey García
 
Sensibilización en Metodologías Ágiles
Sensibilización en Metodologías ÁgilesSensibilización en Metodologías Ágiles
Sensibilización en Metodologías ÁgilesSorey García
 
Boya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows PhoneBoya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows PhoneSorey García
 

Mehr von Sorey García (20)

Mision inspiración para docentes
Mision inspiración para docentesMision inspiración para docentes
Mision inspiración para docentes
 
WIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnologíaWIE: El poder de transformar al mundo con tecnología
WIE: El poder de transformar al mundo con tecnología
 
Internet de las Cosas y Netduino
Internet de las Cosas y NetduinoInternet de las Cosas y Netduino
Internet de las Cosas y Netduino
 
Misión: Inspiración
Misión: InspiraciónMisión: Inspiración
Misión: Inspiración
 
Codies.Launch()
Codies.Launch()Codies.Launch()
Codies.Launch()
 
Tendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarialTendencias de movilidad en el mercado masivo y empresarial
Tendencias de movilidad en el mercado masivo y empresarial
 
[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín[Avanet] Fiesta del Libro y la Cultura Medellín
[Avanet] Fiesta del Libro y la Cultura Medellín
 
MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences MVP Open Day - Best Practices/Experiences
MVP Open Day - Best Practices/Experiences
 
GWAB: Azure Mobile Services
GWAB: Azure Mobile ServicesGWAB: Azure Mobile Services
GWAB: Azure Mobile Services
 
Similitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y WindowsSimilitudes y deferencias en UX para Windows Phone y Windows
Similitudes y deferencias en UX para Windows Phone y Windows
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
 
Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8Conociendo el ecosistema de Windows Phone 8 y Windows 8
Conociendo el ecosistema de Windows Phone 8 y Windows 8
 
Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)Hackaton Globant - Windows Phone (snnipets and tips)
Hackaton Globant - Windows Phone (snnipets and tips)
 
Windows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para DesarrolladoresWindows Phone 8: Tips de Diseño para Desarrolladores
Windows Phone 8: Tips de Diseño para Desarrolladores
 
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y JavascriptJSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
JSConfCo: Desarrollo de Aplicaciones para Windows Store con HTML5 y Javascript
 
Windows Phone 8 en Campus Party
Windows Phone 8 en Campus PartyWindows Phone 8 en Campus Party
Windows Phone 8 en Campus Party
 
Introducción a XAML y MVVM
Introducción a XAML y MVVMIntroducción a XAML y MVVM
Introducción a XAML y MVVM
 
Sensibilización en Metodologías Ágiles
Sensibilización en Metodologías ÁgilesSensibilización en Metodologías Ágiles
Sensibilización en Metodologías Ágiles
 
Boya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows PhoneBoya.ca - Introducción a Windows Phone
Boya.ca - Introducción a Windows Phone
 

Kürzlich hochgeladen

INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 

Kürzlich hochgeladen (20)

INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 

Introducción a Xamarin Forms con XAML

  • 1. Abril 2016 Diplomado Dispositivos Móviles 1 Módulo de Xamarin Forms Parte 1: Introducción a Xamarin
  • 2. Abril 2016 Diplomado Dispositivos Móviles 2 Sorey García (@soreygarcia) Consultora en Movilidad y Freelancer XAML Ingenieria Informatica Politécnico Jaime Isaza Cadavid Especialista en Desarrollo de Software Universidad EAFIT Docente de Cátedra Institución Universitaria Pascual Bravo Co-fundadora de la comunidad de Desarrolladores Avanet y Codies Instructora
  • 3. Abril 2016 Diplomado Dispositivos Móviles 3
  • 4. Abril 2016 Diplomado Dispositivos Móviles 4 Commercial LicenseOpen Source License / Free available 4 From .NET to Xamarin Windows .NET Framework Linux Mono iOS MonoTouch Android Mono for Android iOS Xamarin.iOS Android Xamarin.Android
  • 5. Abril 2016 Diplomado Dispositivos Móviles 5 Silo Approach Crear una App multiples veces
  • 6. Abril 2016 Diplomado Dispositivos Móviles 6 Retos del desarrollo nativo • Mac OS X • XCode • Objective-C • Swift • iOS SDK • Apple Tools • OS • Eclipse or Android Studio or… • Java • Android SDK • SDK Tools • Windows OS • Visual Studio • C# • .NET Framework • Windows Phone SDK
  • 7. Abril 2016 Diplomado Dispositivos Móviles 7 Write Once, Run Anywhere Approach Mínimo común denominador App Generation
  • 8. Abril 2016 Diplomado Dispositivos Móviles 8 Retos del desarrollo híbrido • Mínimo común denominador • Fragmentación del Browser • Desarrollo y diseño para 1 plataforma, afecta las experiencias de usuario
  • 9. Abril 2016 Diplomado Dispositivos Móviles 9
  • 10. Abril 2016 Diplomado Dispositivos Móviles 10 Algunas opciones
  • 11. Abril 2016 Diplomado Dispositivos Móviles 11
  • 12. Abril 2016 Diplomado Dispositivos Móviles 12 Xamarin Approach Comparte código nativo
  • 13. Abril 2016 Diplomado Dispositivos Móviles 13 Comparaciones por plataforma
  • 14. Abril 2016 Diplomado Dispositivos Móviles 14 @implementation MSViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)OnButtonDown:(id)sender { UIAlertView* view = [[UIAlertView alloc]init]; [view setTitle:@"Hello World"]; [view setMessage: @"How are you?”]; [view addButtonWithTitle:@"OK"]; [view show]; } @end public partial class iOSAppViewController : UIViewController { public iOSAppViewController (IntPtr handle) : base (handle){ } public override void ViewDidLoad (){ base.ViewDidLoad (); } partial void OnButtonDown (UIButton sender) { UIAlertView view = new UIAlertView(); view.Title = "Hello World" ; view.Message = "How are you? " ; view.AddButton ("OK"); view.Show(); } iOS
  • 15. Abril 2016 Diplomado Dispositivos Móviles 15 public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { Button myBtn = (Button) this.findViewById( R.id.clickMe); myBtn.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this) ; builder.setTitle( "Hello World") .setMessage("How are you?") .setPositiveButton( "OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); }}) .show(); }}); } } [Activity (Label = "AndroidApp", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); SetContentView (Resource.Layout.Main); Button button = FindViewById<Button> (Resource.Id.me); button.Click += delegate { AlertDialog.Builder builder = new AlertDialog.Builder (this ); AlertDialog dialog = null ; builder.SetTitle ( "Hello World") .SetMessage ( "How are you") .SetPositiveButton( "OK" , delegate { dialog.Dismiss(); } ); dialog = builder.Show (); } ; } } Android
  • 16. Abril 2016 Diplomado Dispositivos Móviles 16 ¿Por qué nativo? Xamarin genera experiencias nativas. Native User Interfaces Native API Access Native Performance
  • 17. Abril 2016 Diplomado Dispositivos Móviles 17 Windows APIs 100% coverage
  • 18. Abril 2016 Diplomado Dispositivos Móviles 18 … or iOS APIs 100% coverage
  • 19. Abril 2016 Diplomado Dispositivos Móviles 19 … or Android APIs 100% coverage
  • 20. Abril 2016 Diplomado Dispositivos Móviles 20 Compilación Nativa Xamarin.iOS does full Ahead Of Time (AOT) compilation to produce an ARM binary for Apple’s App Store. Xamarin.Android takes advantage of Just In Time (JIT) compilation on the Android device.
  • 21. Abril 2016 Diplomado Dispositivos Móviles 21 Cualquier cosa que pueda hacerse en Objective-C or Java puede hacerse en C# con Xamarin usando Visual Studio o Xamarin Studio
  • 22. Abril 2016 Diplomado Dispositivos Móviles 22
  • 23. Abril 2016 Diplomado Dispositivos Móviles 23 Share Code: Portable Class Libraries
  • 24. Abril 2016 Diplomado Dispositivos Móviles 24 NuGet
  • 25. Abril 2016 Diplomado Dispositivos Móviles 25 Shared Projects
  • 26. Abril 2016 Diplomado Dispositivos Móviles 26 Linked Files Compiler Directives
  • 27. Abril 2016 Diplomado Dispositivos Móviles 27 Separación de responsabilidades UserInterface AppLogic General Model-View-ViewModel (MVVM)
  • 28. Abril 2016 Diplomado Dispositivos Móviles 28
  • 29. Abril 2016 Diplomado Dispositivos Móviles 29 Xamarin + Xamarin Forms
  • 30. Abril 2016 Diplomado Dispositivos Móviles 30  40+ Pages, Layouts, and Controls  Build from code behind or XAML  Two-way Data Binding  Navigation  Animation API  Dependency Service  Messaging Center Xamarin.Forms Shared UI Code
  • 31. Abril 2016 Diplomado Dispositivos Móviles 31 Xamarin’s Unique Approach Shared C# codebase • 100% native API access • High performance iOS C# UI Windows C# UIAndroid C# UI Shared C# Mobile C# Server Linux/Mono CoreCLRAzure Shared C# Client/Server
  • 32. Xamarin.Forms: Interfaces Nativas con Código Compartido Use a single API to generate native, platform- specific user interfaces At runtime, each Xamarin.Forms page and its controls are mapped to platform-specific native UI elements
  • 33. Abril 2016 Diplomado Dispositivos Móviles 33 Pages
  • 34. Abril 2016 Diplomado Dispositivos Móviles 34 Layouts
  • 35. Abril 2016 Diplomado Dispositivos Móviles 35 Controls ActivityIndicator BoxView Button DatePicker Editor Entry Image Label ListView Map OpenGLView Picker ProgressBar SearchBar Slider Stepper TableView TimePicker WebView EntryCell ImageCell SwitchCell TextCell ViewCell
  • 36. Abril 2016 Diplomado Dispositivos Móviles 36 Cells • EntryCell • SwitchCell • TextCell • ImageCell http://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/cells/
  • 37. Abril 2016 Diplomado Dispositivos Móviles 37 Controles de terceros
  • 38. Abril 2016 Diplomado Dispositivos Móviles 38 http://www.genymotion.com/ Emuladores
  • 39. Abril 2016 Diplomado Dispositivos Móviles 39 Plataformas Soportadas Xamarin Forms • Android 4.0.3 o Superior • iOS 6.1 o Superior • Windows Phone y Windows 8.1 • Windows 10 UWP
  • 40. Abril 2016 Diplomado Dispositivos Móviles 40 Microsoft adquirió Xamarin
  • 41. Abril 2016 Diplomado Dispositivos Móviles 41 Xamarin Test Cloud
  • 42. Abril 2016 Diplomado Dispositivos Móviles 42 Xamarin Insights
  • 43. Abril 2016 Diplomado Dispositivos Móviles 43 Ventajas y Desventajas VENTAJAS • Se escribe el código solo una vez • Mantiene la experiencia de usuario propia de cada plataforma. • Se permite el acceso a funciones nativas a través de Inyección de Dependencias. • No es necesario conocer todo acerca de las plataformas nativas • Puedes crear código XAML y aprovechar la potencia de MVVM DESVENTAJAS • Es un poco nuevo así que es necesario adaptarse a lo que existe, lo que limita en cuanto a crear UX que demande demasiado esfuerzo gráfico.
  • 44. Xamarin.Forms se recomienda para • Start learning platform specifics – in .NET. • Prototype • Data-driven, task-oriented • multi-platform apps • Recommended for: • Lists • Item selections • Change properties • Update backend
  • 45. NO se recomienda en los siguientes casos • Complex/customized interfaces - nuanced experiences • Android Material Design, iOS transitions • Extensive platform-specific capability • Slow-mo camera, fingerprint scanner (iOS 6) • Not Recommended for: • UI-intensive apps with complex gestures
  • 46. Abril 2016 Diplomado Dispositivos Móviles 46 • Mejoras de integración con iOS 9 y Android 6 • Material Design (AppCompat) • Optimización del rendimiento • XAML pre compilado • Windows 10 (UWP) Preview • Nuevos gestos • Efectos, templates… Xamarin.Forms 2.0
  • 47. Abril 2016 Diplomado Dispositivos Móviles 47 evolve.xamarin.com
  • 48. Abril 2016 Diplomado Dispositivos Móviles 48 Módulo de Xamarin Forms Parte 2: Consideraciones de Publicación
  • 49. Abril 2016 Diplomado Dispositivos Móviles 49 XAML y C# Everywhere La mayoría de recursos en internet enseñan Xamarin Forms con Code Behind. Sin embargo la recomendación es aprender y trabajar con XAML y aprovechar su enfoque a la separación de responsabilidades entre el diseño y la codificación.
  • 50. Abril 2016 Diplomado Dispositivos Móviles 50 Centros de Desarrollo
  • 51. Abril 2016 Diplomado Dispositivos Móviles 51 Apple Developer Center • Cuenta de Desarrollador o Compañia: 99 USD Anuales • Cuenta Empresarial: 299 USD Anuales • En el Apple Developer Center se gestiona la cuenta, certificados y dispositivos • En iTunes Connect se publican las aplicaciones • Invitaciones a beta tester via correo desde iTunes Connect subiendo un Bundle a TestFlight • Nivel de complejidad: Alto • Nivel de exigencia en calidad: Alta • Tiempo de publicación: Días (Entre 7 y 12) • http://appreviewtimes.com/
  • 52. Abril 2016 Diplomado Dispositivos Móviles 52 Windows Store y Windows Phone Store Windows Phone Store y Windows Store • 19 USD de por vida para desarrolladores • 99 USD de por vida para compañías • Invitaciones a beta tester via correo subiendo un paquete. • En el Developer Benefits Center se obtienen beneficios adicionales con suscripciones • Nivel de Complejidad: Medio • Nivel de exigencia en calidad: Baja • Tiempo de publicación: Horas máximo 1 o 2 días, en revisiones posteriores pueden pedirte mejorar la aplicación o puede ser removida de la tienda.
  • 53. Abril 2016 Diplomado Dispositivos Móviles 53 Play Store Developer Center Google Play Store • 25 USD de por vida • En Google Play Store de gestionan y publican las aplicaciones • Se puede enviar versiones Beta a grupos de usuarios • Nivel de complejidad: Bajo • Nivel de exigencia en calidad: Baja • Tiempo de publicación: Horas
  • 54. Abril 2016 Diplomado Dispositivos Móviles 54 Herramientas y Modos de Ejecución
  • 55. Abril 2016 Diplomado Dispositivos Móviles 55 Herramientas Xamarin Studio en MAC o Visual Studio 2015 Update 2 en Windows Android • Android SDK y APIs necesarias según soporte que se dese dar • Dispositivo, Visual Studio Emulator for Android, GenyMotion o Android Player Windows Phone y Windows • Windows SDK • Dispositivo o Emuladores del SDK iOS • Xcode • Dispositivo, Emuladores de Xcode • Xamarin instalado en el MAC aunque se use Windows
  • 56. Abril 2016 Diplomado Dispositivos Móviles 56 Debug y Release Android • No requiere de ninguna consideración para ejecutar en ambos modos. • Para entregar un APK de prueba se necesita generar un KeyStore • Solo se pueden publicar paquetes en release Windows Phone y Windows • No requiere de ninguna consideración para ejecutar en ambos modos. • Para generar el appx de prueba se necesita firmar los paquetes con Visual • Las apps Universales de Windows 10 están aún en Preview • Para probar paquetes en dispositivos, se debe desbloquear el dispositivo para desarrollo • Solo se pueden publicar paquetes en release
  • 57. Abril 2016 Diplomado Dispositivos Móviles 57 Debug y Release iOS • Requiere cuenta de desarrollador autorizada • Requiere configurar certificados de desarrollo bajados desde del developer center e instalados en el KeyChain para Debug o Adhoc / AppStore. • Se requiere generar el AppId de la aplicación en desarrollo • Para generar IPA (Paquetes en Adhoc para prueba en dispositivos) se requiere registrar el equipo en la cuenta de desarrollador y habilitar el dispositivo en el certificado especifico de desarrollo o distribución • Solo se pueden publicar paquetes generados en modo AppStore.
  • 58. Abril 2016 Diplomado Dispositivos Móviles 58 APIs por Plataforma (Mapas y Notificaciones)
  • 59. Abril 2016 Diplomado Dispositivos Móviles 59 APIs para Mapas Nativos Google • Los mapas requieren configurar el SHA del Key Store en la consola de desarrolladores y solicitar las llaves para Debug y para Release para Google Maps Android API v2 • Las notificaciones requieren configurar una llave para Google Cloud Messaging for Android • Consola de desarrolladores: https://code.google.com/apis/console/
  • 60. Abril 2016 Diplomado Dispositivos Móviles 60 APIs para Mapas Nativos iOS • Los mapas no requieren nada adicional • Se requiere habilitar el certificado de Notificaciones Push para el AppId correspondiente a la app que se esta desarrollando uno para Debug y otro para Adhoc / AppStore Windows Phone y Windows • Los mapas requieren una llave para mapas de Bing > https://www.bingmapsportal.com/ • Las notificaciones requieren de llaves generadas en los Store para cada una de las aplicaciones publicadas.
  • 61. Abril 2016 Diplomado Dispositivos Móviles 61 Azure Service Bus Debido a la complejidad del envió de notificaciones que tiene cada plataforma existen servicios como el de Azure Service Bus que centraliza los envíos de notificaciones. • iOS: Debe configurarse el certificado generado en la máquina donde se está compilando para publicar. • Android: Debe configurarse la llave entregada en la consola de desarrolladores • Windows Phone: debe configurarse la llave entregada en el Windows Phone Store.
  • 62. Abril 2016 Diplomado Dispositivos Móviles 62 Base de datos local
  • 63. Abril 2016 Diplomado Dispositivos Móviles 63 SQLite • SQLite provee una base de datos local por plataforma. • Esta base de datos es almacenada en el sistema de archivos. • SQLite está soportada nativamente por iOS y Android pero no en Windows Phone o Windows. Debe instalarse Sqlite for Windows y Sqlite for Windows Phone
  • 64. Abril 2016 Diplomado Dispositivos Móviles 64 SQLite.NET Async (ORM)
  • 65. Abril 2016 Diplomado Dispositivos Móviles 65 Custom Controls, Renderers y Bindings
  • 66. Abril 2016 Diplomado Dispositivos Móviles 66 Controles Extendidos y Custom Controls • El comportamiento de los controles puede ser extendido creando clases que heredan de los controles base y añadiendo Propiedades de Dependencia, un concepto usado en el desarrollo con XAML que permite crear propiedades que pueden ser enlazadas con orígenes de datos (Bindings XAML).
  • 67. Abril 2016 Diplomado Dispositivos Móviles 67 Renderers y Custom Renderers • Los renderers son clases que provee Xamarin, para acceder a los miembros nativos de los controles de Forms y alterar así la forma como estos controles se dibujan. Cada control de Forms tiene su renderer excepto los Layouts. • Es posible querer renderizar o presentar un control que aún no ha sido incluido en Xamarin Forms pero que se desea usar. • Para esto existe un renderer genérico ViewRenderer a través del cual se pueden realizar las implementaciones de estos controles. • Para que estos controles tengan datos que provengan de Bindings debe asociarse este concepto con el visto previamente Controles Extendidos y Custom Controls.
  • 68. Abril 2016 Diplomado Dispositivos Móviles 68 Bindings Xamarin provee de los bindings necesarios para acceder a las APIs base de cada plataforma desde C#, sin embargo hay empresas de terceros que proveen controles o funcionalidades que son populares. La manera de acceder a estas es crear nuestros propios bindings si es que no existen ya en la tienda de componentes. Es necesario aprender como se hace esto en cada plataforma en particular. Android • http://developer.xamarin.com/guides/android/advanced_topics/java_integ ration_overview/binding_a_java_library_%28.jar%29/ iOS • http://developer.xamarin.com/guides/ios/advanced_topics/binding_objecti ve-c/
  • 69. Abril 2016 Diplomado Dispositivos Móviles 69 Módulo de Xamarin Forms Parte 3: Introducción a XAML y MVVM
  • 70. Abril 2016 Diplomado Dispositivos Móviles 70 Conceptos básicos
  • 71. Abril 2016 Diplomado Dispositivos Móviles 71 • XAML es un lenguaje declarativo, basado en XML y pensado para escribir la interface gráfica de una aplicación de forma textual y ordenada. • Una característica muy importante de XAML es que todos los objetos qué definamos en el, automáticamente son instanciados por el CLR y creados como objetos accesibles desde código, sin necesidad de realizar de nuevo la declaración de los mismos en Code Behind, todo gracias al mecanismo de las Clases Parciales. • Su principal objetivo es la separación de responsabilidades. ¿Qué es XAML?
  • 72. Abril 2016 Diplomado Dispositivos Móviles 72 • Los conceptos que permiten esta separación de responsabilidades en XAML son en especial los bindings y los comandos, los cuales nos permiten respectivamente “enlazar” datos y acciones a nuestras vistas. • Ambos dependen del otro concepto a manejar que se conoce como el contexto de datos, para el cual se requiere una adecuada comprensión de los conceptos de orientación a objetos. • Los convertidores por su parte nos ayudan a trasformar un dato y mostrar en la vista el resultado de dicha transformación. XAML
  • 73. Abril 2016 Diplomado Dispositivos Móviles 73 • Es un patrón de diseño creado en 2005 y es una evolución de MVC y MVP usado especialmente para aplicaciones basadas en XAML. • La traducción de sus iniciales es Modelo Vista – Vista Modelo. • Su principal propósito y beneficio está en la separación de responsabilidades a nivel de la presentación de nuestras aplicaciones. • Las implementaciones de MVVM son diversas y dependen básicamente de las necesidades que tenga la aplicación o el desarrollo en sí mismo. • Existen muchos frameworks disponibles para implementar MVVM en aplicaciones XAML, su elección es personal y opcional. El framework más más usado es MVVM Light. ¿Qué es MVVM?
  • 74. Abril 2016 Diplomado Dispositivos Móviles 74 Separación de responsabilidades UserInterface AppLogic General Model-View-ViewModel (MVVM)
  • 75. Abril 2016 Diplomado Dispositivos Móviles 75 MVVM Simple Model View ViewModel Data Bindings One way One time Two way Commands Interfaz de Usuario Clases que representan las fuentes de datos Estructuras que representan los contextos de datos de las pantallas y el que permiten el acceso a la logica de negocio
  • 76. Abril 2016 Diplomado Dispositivos Móviles 76 Vistas Aplicaciones de escritorio, web forms Caja de texto Etiqueta Form.cs (Code behind C#) Form.designer.cs (C#) Clase Form Usar code behind en clases parciales, es el escenario “típico o más sencillo” de un desarrollador .NET. Aplicaciones XAML Caja de texto Etiqueta MainPage.xaml (Lenguaje declarativo XAML) MainPage.xaml.cs (Code behind C#) Clase MainPage Nuestra meta para hacer código portable es usar code hind al mínimo posible. En la demo de hecho cero code behind.
  • 77. Abril 2016 Diplomado Dispositivos Móviles 77 Usando XAML se pueden crear de forma declarativa los mismos elementos gráficos que se crearían en código Vistas <StackLayout> <TextBox/> <Button/> </StackLayout> StackLayout stackPanel = new StackLayout(); Entry textBox = new Entry(); stackPanel.Children.Add(textBox); Button button = new Button(); stackPanel.Children.Add(button);
  • 78. Abril 2016 Diplomado Dispositivos Móviles 78 Ambos escenarios permiten acceder a los controles de la pantalla como miembros de la clase que los contiene es decir this.txtMensaje.Text = “Hola”; Y crear event handlers para poner el código relacionado a una interacción del usuario, por ejemplo el click de un botón private void Button_Click(object sender, RoutedEventArgs e) { //Code } Sin embargo como ya lo dijimos, está no es la mejor práctica para hacer código portable y reusable. Vistas
  • 79. Abril 2016 Diplomado Dispositivos Móviles 79 Bindings y Contextos de datos Los bindings son textos declarativos que definen a que propiedad o comando del contexto de datos está asociado un atributo de un elemento XAML. Los contextos de datos, no son más que instancias de clases. Como fuente de los bindings también pueden usarse recursos XAML declarados a nivel de la App o en algún diccionario de recursos. Guardar cambios Nombre Editar perfil Apellido
  • 80. Abril 2016 Diplomado Dispositivos Móviles 80 Entendiendo los bindings de forma simple 12:38 recordar ***** iniciar sesión password soreygarcia usuario Text={Binding UserName} Password={Binding Password} Command={Binding StartCommand} BindingContext={Binding Usuario, Source={StaticResource Locator}} BindingContext > Instancia de una clase, de una Vista Modelo
  • 81. Abril 2016 Diplomado Dispositivos Móviles 81 XAML sin bindings <StackLayout x:Name="ContentPanel" Grid.Row="1" > <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Button Content="Button"/> </StackLayout> Esta es la declaración XAML de la vista que se presento en la diapositiva anterior creada en Windows Phone.
  • 82. Abril 2016 Diplomado Dispositivos Móviles 82 XAML con bindings <StackLayout x:Name="ContentPanel" Grid.Row="1"> <Label Text="TextBlock"/> <Entry Height="72" Text="{Binding Nombre, Mode=TwoWay}"/> <Label Text="TextBlock"/> <TextBox Height="72" Text="{Binding Apellido, Mode=TwoWay}"/> <Button Content="Button"/> </StackLayout> Esta es la declaración XAML usando bindings. Lo que hay que entender de esto es que los bindings de los Textbox indican que esperamos que el DataContext del StackPanel tengan las propiedades Nombre y Apellido.
  • 83. Abril 2016 Diplomado Dispositivos Móviles 83 ¿De donde van a salir esos datos? <Grid x:Name="LayoutRoot" Background="Transparent" BindingContext="{Binding Usuario, Source={StaticResource SampleDataSource}}"> <Grid x:Name="ContentPanel"> <!– Aquí van los demás elementos de nuestra vista --> </Grid> </Grid> Si vemos el contenedor de nuestro StackLayout vemos que tiene asignados dos contextos, uno en tiempo de diseño y otro en tiempo de ejecución. El contexto del contenedor interno, espera que el contexto del contenedor más externo tenga alguna propiedad con el nombre Persona.
  • 84. Abril 2016 Diplomado Dispositivos Móviles 84 Vistas Modelos Las Vistas Modelos son las clases que al instanciarse van a servir como contextos de datos a nuestras vistas. Aprender a definir las Vistas Modelo, es más importante de lo que parece. class ViewModels ClueViewModel «property» + Name(): string + Value(): string BindableBase MainViewModel - jsonService: IJsonService - navigationService: INavigationService - phoneService: IPhoneService - randomGen: Random - LoadPlayers(): void + MainViewModel(INavigationService, IPhoneService) ~ SufflePlayers(): void «property» + Players(): ObservableCollection<PlayerViewModel> + SelectedPlayer(): PlayerViewModel BindableBase PlayerViewModel - navigationService: INavigationService - phoneService: IPhoneService - wasDiscovered: bool - Discover(): void - Guess(): void + PlayerViewModel(INavigationService, IPhoneService) «property» + Answer(): string + Clues(): ObservableCollection<ClueViewModel> + DiscoverCommand(): ICommand + GuessCommand(): ICommand + Id(): int + Name(): string + ParentViewModel(): MainViewModel + Photo(): string + WasDiscovered(): bool http://blog.soreygarcia.me/2013/12/imaginando-los-prototipos-y-las-vistas.html
  • 85. Abril 2016 Diplomado Dispositivos Móviles 85 Comandos Events Event HandlersCommanding Los comandos se enlazan a las vistas a través de bindings y dependen del contexto de datos pero están enfocados a ejecutar acciones. Su implementación se hace usando la interfaz ICommand
  • 86. Abril 2016 Diplomado Dispositivos Móviles 86 Comandos Esta es la asociación en XAML usando bindings del uso de un comando, como vemos la vista no tiene idea de cual es la implementación concreta del método, esta es relativa al contexto que le sea asignado. <StackLayout x:Name="ContentPanel" Grid.Row="1" > <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Label Text="TextBlock"/> <Entry Height="72" Text="TextBox"/> <Button Content="Button" Command="{Binding GuardarPerfilCommand}"/> </StackLayout>
  • 87. Abril 2016 Diplomado Dispositivos Móviles 87 Servicios Otra buena práctica es no colocar lógica compleja en las vistas modelo, aunque ellas son las receptoras de los comandos, una práctica simple (en este nivel intermedio) es usar clases que llamaremos servicios, para ejecutar la lógica particular de la app o del negocio.
  • 88. Abril 2016 Diplomado Dispositivos Móviles 88 http://blog.soreygarcia.me/2014/07/xaml-para-principiantes-fordummies.html
  • 89. Abril 2016 Diplomado Dispositivos Móviles 89 Android iOS Cross (Xamarin Forms) PCL (Logic) Windows + C o m p a r t i d o CalendarService CalendarService CalendarService Xamarin Forms NavigationService MainViewModel ApiService DepencyCo ntaider ICalendarSer vice LocalDataService DbConnectionService DbConnectionService IDbConnecti onService
  • 90. Abril 2016 Diplomado Dispositivos Móviles 90 Pantallas (XAML) ViewModels (Origen de los datos) Servicios InstancelLocator (Dependency Injection) Resources Framework MVVM (MVVM Light, MVVM Cross, * Infrastructure.Commo n) ApiService LocalDataServic e SettingsService NavigationServi ce NetworkService CrossService DialogService Models
  • 91. Abril 2016 Diplomado Dispositivos Móviles 91 MVVM Light Pantallas (XAML) C o n t r o l e s V i e w M o d e l s Commands Bindings Binding Name Property Name Method Login S e r v i c i o s Data Login Binding ValidationErrors [KeyName] Binding LoginCommand StaticResource ThemeColor Recursos (Resource Dictionary) ViewModelLocator MainViewModel Patterns & Practices ServiceLocator Arquitectura Con MVVM Light Autofac (Contenedor de dependencias) ServiceLocator ApiService LocalDataService DataTemplates Colores Fuentes
  • 92. Abril 2016 Diplomado Dispositivos Móviles 92 Material Recomendado Foros de Xamarin BugZilla VERSION FINAL https://blogs.msdn.microsoft.com/microsoft_press/2016/03/31/fre e-ebook-creating-mobile-apps-with-xamarin-forms/ OFFICIAL SITE https://developer.xamarin.com/ ALGUNOS VIDEOS https://www.youtube.com/user/soreygarcia
  • 93. Abril 2016 Diplomado Dispositivos Móviles 93 Free 30 Day Trial - xamarin.com/university Unrivaled Mobile Development Training Live unlimited mobile development training from mobile experts, in your time-zone, on your schedule, and as often as you'd like.
  • 94. Abril 2016 Diplomado Dispositivos Móviles 94 ¿Preguntas? Sorey García soreygarcia@gmail.com | @soreygarcia | blog.soreygarcia.me