Conceptos básicos de XAML para Xamarin.Forms
El lenguaje de marcado de aplicaciones extensible (XAML) es un lenguaje basado en XML creado por Microsoft como alternativa al código de programación para crear instancias de objetos, inicializarlos y organizar esos objetos en jerarquías de elementos primarios y secundarios. XAML se ha adaptado a varias tecnologías dentro de .NET Framework, pero ha encontrado su mayor utilidad en la definición del diseño de interfaces de usuario en Windows Presentation Foundation (WPF), Silverlight, Windows Runtime y la Plataforma Windows universal (UWP).
El lenguaje XAML permite a los desarrolladores definir interfaces de usuario en aplicaciones de Xamarin.Forms mediante el marcado, en lugar de código. XAML nunca es necesario en un programa de Xamarin.Forms, pero a menudo es más conciso y más coherente a nivel visual que el código equivalente, y potencialmente más manejable. XAML es adecuado para su uso con la popular arquitectura de aplicación MVVM (Modelo-Vista-Modelo de vista): XAML define la vista que está vinculada al código del modelo de vista por medio de enlaces de datos basados en XAML.
Dentro de un archivo XAML, el desarrollador de Xamarin.Forms puede definir interfaces de usuario mediante todas las vistas, diseños y páginas de Xamarin.Forms, así como mediante clases personalizadas. El archivo XAML se puede compilar o insertar en el ejecutable. En cualquier caso, la información de XAML se analiza en tiempo de compilación para buscar objetos con nombre y también en tiempo de ejecución para crear instancias e inicializar objetos, además de para establecer vínculos entre estos objetos y el código de programación.
XAML tiene varias ventajas con respecto al código equivalente:
- XAML suele ser más breve y legible que el código equivalente.
- La jerarquía de elementos primarios y secundarios inherente a XML permite a XAML imitar con mayor claridad visual la jerarquía de elementos primarios y secundarios de los objetos de la interfaz de usuario.
- Los programadores pueden escribir lenguaje XAML fácilmente a mano, pero también pueden trabajarlo y generarlo con herramientas de diseño visual.
También hay desventajas, principalmente relacionadas con las limitaciones intrínsecas de los lenguajes de marcado:
- XAML no puede contener código. Todos los controladores de eventos deben definirse en un archivo de código.
- XAML no puede contener bucles para el procesamiento repetitivo. (Sin embargo, varios objetos visuales de Xamarin.Forms, en particular
ListView
, pueden generar múltiples elementos secundarios en función de los objetos de su colecciónItemsSource
). - XAML no puede contener procesamiento condicional. (No obstante, un enlace de datos puede hacer referencia a un convertidor de enlaces basado en código que permita cierto procesamiento condicional).
- Por lo general, XAML no puede crear instancias de clases que no definen un constructor sin parámetros. (Sin embargo, a veces hay una manera de sortear esta restricción).
- Por lo general, XAML no puede llamar a métodos. (De nuevo, esta restricción a veces se puede sortear).
Todavía no hay un diseñador visual para generar lenguaje XAML en aplicaciones de Xamarin.Forms. Todo el lenguaje XAML debe estar escrito a mano, pero puede usar Recarga activa XAML en Visual Studio 2019 o Visual Studio para Mac para ver los diseños de pantallas a medida que los edita. Incluso los desarrolladores con mucha experiencia en XAML saben que la experimentación merece la pena.
XAML es básicamente XML, pero XAML tiene algunas características de sintaxis únicas. Las más importantes son las siguientes:
- Elementos de propiedad
- Propiedades adjuntas
- Extensiones de marcado
Estas características no son extensiones XML. XAML es XML completamente legal. Pero estas características de sintaxis XAML usan XML de maneras únicas. Se analizan en detalle en los artículos siguientes, los cuales concluyen con una introducción al uso de XAML para implementar MVVM.
Requisitos
En este artículo se da por supuesto que está familiarizado con Xamarin.Forms. En este artículo también se presupone cierta familiaridad con XML, incluida la comprensión del uso de declaraciones de espacio de nombres XML, y con los términos elemento, etiqueta y atributo.
Cuando esté familiarizado con Xamarin.Forms y XML, empiece a leer la parte 1: Introducción a XAML.