:::no-loc(Xamarin.Forms)::: Conceptos básicos de XAML:::no-loc(Xamarin.Forms)::: XAML Basics

Descargar ejemplo Descargar el ejemploDownload Sample Download the sample

El lenguaje de marcado de aplicaciones extensible (XAML) es un lenguaje basado en XML creado por Microsoft como una alternativa a código de programación para la creación de instancias e inicialización de objetos, y la organización de esos objetos en jerarquías de elementos primarios y secundarios.The eXtensible Application Markup Language (XAML) is an XML-based language created by Microsoft as an alternative to programming code for instantiating and initializing objects, and organizing those objects in parent-child hierarchies. XAML se ha adaptado a varias tecnologías de .NET Framework, pero ha encontrado su utilidad más importante para definir el diseño de las interfaces de usuario en el Windows Presentation Foundation (WPF), Silverlight, el Windows Runtime y el Plataforma universal de Windows (UWP).XAML has been adapted to several technologies within the .NET framework, but it has found its greatest utility in defining the layout of user interfaces within the Windows Presentation Foundation (WPF), Silverlight, the Windows Runtime, and the Universal Windows Platform (UWP).

XAML permite a los desarrolladores definir interfaces de usuario en :::no-loc(Xamarin.Forms)::: aplicaciones con marcado en lugar de código.XAML allows developers to define user interfaces in :::no-loc(Xamarin.Forms)::: applications using markup rather than code. XAML no se requiere nunca en un :::no-loc(Xamarin.Forms)::: programa, pero suele ser más conciso y visualmente coherente que el código equivalente, y que puede ser de utilidad.XAML is never required in a :::no-loc(Xamarin.Forms)::: program, but it is often more succinct and more visually coherent than equivalent code, and potentially toolable. XAML está bien adaptado para su uso con la popular arquitectura de aplicación MVVM (modelo-vista-ViewModel): XAML define la vista que está vinculada al código ViewModel a través de enlaces de datos basados en XAML.XAML is well suited for use with the popular MVVM (Model-View-ViewModel) application architecture: XAML defines the View that is linked to ViewModel code through XAML-based data bindings.

Dentro de un archivo XAML, el :::no-loc(Xamarin.Forms)::: desarrollador puede definir interfaces de usuario mediante todas las :::no-loc(Xamarin.Forms)::: vistas, diseños y páginas, así como clases personalizadas.Within a XAML file, the :::no-loc(Xamarin.Forms)::: developer can define user interfaces using all the :::no-loc(Xamarin.Forms)::: views, layouts, and pages, as well as custom classes. El archivo XAML se puede compilar o incrustar en el ejecutable.The XAML file can be either compiled or embedded in the executable. En cualquier caso, la información XAML se analiza en tiempo de compilación para buscar objetos con nombre y de nuevo en tiempo de ejecución para crear instancias e inicializar objetos, y para establecer vínculos entre estos objetos y el código de programación.Either way, the XAML information is parsed at build time to locate named objects, and again at runtime to instantiate and initialize objects, and to establish links between these objects and programming code.

XAML tiene varias ventajas con respecto al código equivalente:XAML has several advantages over equivalent code:

  • XAML suele ser más conciso y legible que el código equivalente.XAML is often more succinct and readable than equivalent code.
  • La jerarquía de elementos primarios y secundarios inherente en XML permite que XAML imite con mayor claridad visual de la jerarquía de elementos primarios y secundarios de los objetos de la interfaz de usuario.The parent-child hierarchy inherent in XML allows XAML to mimic with greater visual clarity the parent-child hierarchy of user-interface objects.
  • El código XAML puede escribirse fácilmente a los programadores, pero también se presta a ser herramienta y generarse mediante herramientas de diseño visual.XAML can be easily hand-written by programmers, but also lends itself to be toolable and generated by visual design tools.

También hay desventajas, principalmente relacionadas con las limitaciones que son intrínsecas a los lenguajes de marcado:There are also disadvantages, mostly related to limitations that are intrinsic to markup languages:

  • XAML no puede contener código.XAML cannot contain code. Todos los controladores de eventos se deben definir en un archivo de código.All event handlers must be defined in a code file.
  • XAML no puede contener bucles para el procesamiento repetitivo.XAML cannot contain loops for repetitive processing. (Sin embargo, varios :::no-loc(Xamarin.Forms)::: objetos visuales, en concreto, ListView pueden generar varios elementos secundarios basados en los objetos de su ItemsSource colección).(However, several :::no-loc(Xamarin.Forms)::: visual objects—most notably ListView —can generate multiple children based on the objects in its ItemsSource collection.)
  • XAML no puede contener procesamiento condicional (sin embargo, un enlace de datos puede hacer referencia a un convertidor de enlace basado en código que permita de forma eficaz algún procesamiento condicional).XAML cannot contain conditional processing (However, a data-binding can reference a code-based binding converter that effectively allows some conditional processing.)
  • Por lo general, XAML no puede crear instancias de clases que no definen un constructor sin parámetros.XAML generally cannot instantiate classes that do not define a parameterless constructor. (Sin embargo, a veces hay una forma de evitar esta restricción).(However, there is sometimes a way around this restriction.)
  • Normalmente, XAML no puede llamar a métodos.XAML generally cannot call methods. (De nuevo, esta restricción a veces se puede solucionar).(Again, this restriction can sometimes be overcome.)

Todavía no hay un diseñador visual para generar XAML en :::no-loc(Xamarin.Forms)::: aplicaciones.There is not yet a visual designer for generating XAML in :::no-loc(Xamarin.Forms)::: applications. Todo XAML debe estar escrito a mano, pero hay un controlador de vista previa de XAML.All XAML must be hand-written, but there is a XAML Previewer. Es posible que los programadores nuevos en XAML deseen compilar y ejecutar sus aplicaciones con frecuencia, especialmente después de cualquier cosa que podría no ser correcta.Programmers new to XAML might want to frequently build and run their applications, particularly after anything that might not be correct. Incluso los desarrolladores con mucha experiencia en XAML saben que la experimentación es gratificante.Even developers with lots of experience in XAML know that experimentation is rewarding.

XAML es básicamente XML, pero XAML tiene algunas características de sintaxis únicas.XAML is basically XML, but XAML has some unique syntax features. Las más importantes son las siguientes:The most important are:

  • Elementos de propiedadProperty elements
  • Propiedades adjuntasAttached properties
  • Extensiones de marcadoMarkup extensions

Estas características no son extensiones XML.These features are not XML extensions. XAML es completamente XML legal.XAML is entirely legal XML. Pero estas características de sintaxis XAML usan XML de maneras únicas.But these XAML syntax features use XML in unique ways. Se describen en detalle en los artículos siguientes, que concluyen con una introducción al uso de XAML para implementar MVVM.They are discussed in detail in the articles below, which conclude with an introduction to using XAML for implementing MVVM.

RequisitosRequirements

En este artículo se supone que está familiarizado con :::no-loc(Xamarin.Forms)::: .This article assumes a working familiarity with :::no-loc(Xamarin.Forms):::. En este artículo también se da por hecho que está familiarizado con XML, incluida la descripción del uso de las declaraciones de espacios de nombres XML y el elemento de términos, la etiqueta y el atributo.This article also assumes some familiarity with XML, including understanding the use of XML namespace declarations, and the terms element , tag , and attribute.

Cuando esté familiarizado con :::no-loc(Xamarin.Forms)::: y XML, empiece a leer la parte 1. Introducción con XAML.When you're familiar with :::no-loc(Xamarin.Forms)::: and XML, start reading Part 1. Getting Started with XAML.

Encuentre más vídeos de Xamarin en Channel 9 y YouTube.Find more Xamarin videos on Channel 9 and YouTube.