Recursos en XAML
Clase 29 de 83 • Curso de Xamarin 2018
Contenido del curso
Introducción a Xamarin
Preparando el entorno para Xamarin
- 5

Requerimientos del sistema para instalar Visual Studio
04:17 min - 6

Xamarin en Mac
02:21 min - 7

Instalando Visual Studio en Mac OS
00:57 min - 8

Xamarin en Windows
02:16 min - 9

Instalando Visual Studio en Windows
02:24 min - 10

Xamarin Emuladores iOS y Android
02:50 min - 11

Crear un Emulador Android en Windows con Visual Studio
00:33 min
Comenzando un Proyecto en Xamarin Forms
Eventos en Xamarin Forms
SQLite en Xamarin Forms
- 19

Implementando SQLite en Xamarin Forms Windows
00:20 min - 20

Implementando SQLite en Xamarin Forms
03:24 min - 21

Creando el Modelo Tarea en Xamarin Forms
06:11 min - 22

Creando el Modelo Tarea en Xamarin Forms Windows
00:19 min - 23

Creando una base de datos SQLite en Xamarin Forms
11:43 min - 24

Insertando un registro en la base de datos
09:16 min - 25

Implementando Listas
05:23 min - 26

Leyendo datos desde SQLite
10:25 min - 27

Actualizando datos SQLIte
06:13 min - 28

Implementando Filtros SQLite
10:06 min
Recursos y estilos en XAML Xamarin Forms
Xamarin Nativo, comenzando con PlatziTrips
Xamarin.Android
Xamarin.iOS
Proyectos compartidos en Xamarin
SQLite en Xamarin
- 39

Integrando SQLite en el PCL de Xamarin
06:40 min - 40

Insertando elementos a la base de datos en Xamarin
05:43 min - 41

Usando ScrollView en Xamarin.Android
08:45 min - 42

SQLite en el proyecto Xamarin.Android
10:33 min - 43

Utilizando NavigationController en Xamarin.iOS
11:21 min - 44

SQLite en el proyecto Xamarin.iOS
09:23 min
Listas en Android
Listas en iOS
Consultado Servicios REST en Xamarin
- 55

Foursquare y PlatziTrips
07:21 min - 56

Definiendo URL base de Foursquare
07:20 min - 57

Creando un Deserializador JSON en Xamarin
12:52 min - 58

Layout con Toolbar en Xamarin Android
11:11 min - 59

Pasando parámetros entre Activities en Xamarin Android
12:07 min - 60

Llenando un Spinner en Xamarin Android
15:52 min - 61

Creando una pantalla de búsqueda en Xamarin Android
14:46 min - 62

Implementando un toolbar con botón de guardar en Xamarin Android
11:30 min - 63

Implementando Selección Múltiple en un ListView
13:00 min - 64

Leyendo sitios de interés desde base de datos
14:20 min - 65

Segues con identificador en Xamarin iOS
04:53 min - 66

Pasando parámetros entre Controllers en Xamarin iOS
13:20 min - 67

Creando un PickerView en Xamarin iOS
07:54 min - 68

Mostrando datos en un PickerView Xamarin iOS
16:07 min - 69

Creando un UITableViewSource en Xamarin iOS
16:54 min - 70

TableViews de multiple selección en Xamarin iOS
08:46 min - 71

Creando una pantalla de búsqueda en Xamarin iOS
06:28 min
Mapas en Xamarin
Publicando Apps en Xamarin
- 76

PlatziTrips en Xamarin iOS y Android
10:27 min - 77

Creando un apk en Xamarin Android
07:27 min - 78

Probando en un dispositivo real Android con Xamarin
04:26 min - 79

Creando certificados para publicar en iOS con Xamarin
12:45 min - 80

Creando un ipa y registrando la app en Apple Store
04:15 min - 81

Probando en un dispositivo real iOS con Xamarin
01:03 min - 82

Publicando en Apple Store
01:23 min
Fin del Curso de Xamarin
Hasta ahora la aplicación que desarrollamos está utilizando estilos por defecto de los elementos que estamos usando. Pero imagina el escenario en el que quieres que todos los botones tengan el mismo color de fondo, que todas las etiquetas de texto tengan un tamaño específico y usen un tipo de letra diferente al por default, o que tengas colores que se deben usar a lo largo de toda la aplicación en diferentes elementos.
La solución directa que puede venirte a la mente es agregar, dentro de la definición XAML de cada uno de los elementos, un valor para las propiedades correspondientes. Sin embargo, esta no es una solución viable para un proyecto que tiene varios botones, muchas etiquetas de texto o demasiados elementos en los cuales ocupar el mismo color.
En este punto entran los recursos en XAML, que hacen que ciertos elementos estén disponibles dentro de su ámbito. Podemos pensar de los recursos como algo similar a las propiedades en C#, y que estarán disponibles para su uso y re-uso a lo largo de su ámbito, por ejemplo una página, o la aplicación completa.
Definiendo recursos
Para definir recursos, abre la página de inicio de sesión en el proyecto de ToDo, vamos a definir como recursos algunos colores que la app va a usar.
Así como un ContentPage tiene una propiedad Content, también tiene una de Resources, que podemos definir así:
<ContentPage.Resources> <ResourceDictionary> </ResourceDictionary> </ContentPage.Resources>
Dentro de esta definición podremos definir recursos que estarán disponibles en todo el ContentPage. Nota que dentro de los recursos, estamos definiendo un diccionario de recursos, un diccionario se identifica porque tiene una llave y tiene un valor, y será exactamente lo que definiremos. Cada recurso se identificará por un key, y se le asignará un valor, por ejemplo, si queremos definir un color, deberemos hacer lo siguiente:
<Color x:Key="accentColor">#7FC719</Color>
Primero hemos establecido el tipo de recurso que usaremos, en este caso, Color. Después definimos el valor de la llave, que será accentColor, y nos ayudará a identificar el recurso para usarlo. Finalmente, definimos el valor del recurso con un valor hexadecimal en el caso de un color.
Ahora, podremos usar este recurso a través de su key como valor del color de cualquier elemento.
Usando un recurso
Una vez definido el recurso, podemos asignarlo como valor de cualquier propiedad que acepte ese tipo. En el caso del recurso accentColor, podemos asignarlo a propiedades que establecen color de algún elemento, por ejemplo el color de background del botón. Para acceder a un recurso deberemos hacer uso de la siguiente sintaxis, así como de StaticResource:
BackgroundColor="{StaticResource accentColor}"
Hacer esto dentro del botón dará estos resultados:
Por supuesto, podemos seguir definiendo nuevos recursos y utilizarlos de forma similar. Por ejemplo un recurso para el color de texto del botón:
<Color x:key="buttonTextColor">#FFFFFF</Color>
Para usarlo de esta manera:
TextColor="{StaticResource buttonTextColor}"
Para obtener este resultado:
Ventajas
¿Cuál es la ventaja de usar los recursos? Simple, podemos reutilizarlos a lo largo de toda la página, o incluso toda la aplicación. Imagina que has utilizado este recurso en algunos otros elementos:
<Entry x:Name="nombreEntry" Text="Tarea 1" Placeholder="Nombre de la tarea" TextColor="{StaticResource accentColor}" Grid.ColumnSpan="2"/> <DatePicker x:Name="fechaDatePicker" TextColor="{StaticResource accentColor}" Grid.Row="1"/> <TimePicker x:Name="horaTimePicker" TextColor="{StaticResource accentColor}" Grid.Row="1" Grid.Column="1"/> <Button Text="Guardar" BackgroundColor="{StaticResource accentColor}" TextColor="{StaticResource buttonTextColor}" Grid.Row="2" Grid.ColumnSpan="2" Clicked="Handle_Clicked”/>
Después de haber definido este color como el color de acento, quieres cambiarlo. De no haber usado el recurso, tendrías que ir a cada elemento y cambiar el color. Pero como has usado un recurso que se está reutilizando en cada lugar necesario, basta con cambiar su valor para que los cambios se apliquen:
<Color x:Key="accentColor">#293275</Color>