WPF: descripción general de XAML

Una de las primeras cosas que encontrará al trabajar con WPF es XAML. XAML son las siglas de Extensible Application Markup Language. Es un lenguaje simple y declarativo basado en XML.

  • En XAML, es muy fácil crear, inicializar y establecer propiedades de objetos con relaciones jerárquicas.

  • Se utiliza principalmente para diseñar GUI, sin embargo, también se puede utilizar para otros fines, por ejemplo, para declarar el flujo de trabajo en Workflow Foundation.

Sintaxis básica

Cuando cree su nuevo proyecto WPF, encontrará parte del código XAML de forma predeterminada en MainWindow.xaml como se muestra a continuación.

<Window x:Class = "Resources.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "525"> 
	
   <Grid> 
         
   </Grid> 
	
</Window>

El archivo XAML anterior contiene diferentes tipos de información. La siguiente tabla explica brevemente la función de cada información.

Información Descripción
<Ventana Es el elemento de objeto de apertura o contenedor de la raíz.
x: Class = "Resources.MainWindow" Es una declaración de clase parcial que conecta el marcado con el código de clase parcial definido detrás.
xmlns = "http://schemas.microsoft.com/win fx / 2006 / xaml / presentation" Asigna el espacio de nombres XAML predeterminado para el marco / cliente de WPF
xmlns: x = "http://schemas.microsoft.com/w infx / 2006 / xaml" Espacio de nombres XAML para el lenguaje XAML que lo asigna a x: prefix
> Fin del elemento de objeto de la raíz

<Cuadrícula>

</Grid>

Es etiquetas de inicio y cierre de un objeto de cuadrícula vacío.
</Window> Cerrar el elemento de objeto

Las reglas de sintaxis para XAML son casi similares a XML. Si observa un documento XAML, notará que en realidad es un archivo XML válido, pero un archivo XML no es necesariamente un archivo XAML. Esto se debe a que en XML, el valor de los atributos debe ser una cadena, mientras que en XAML, puede ser un objeto diferente que se conoce como sintaxis del elemento de propiedad.

  • La sintaxis de un elemento de objeto comienza con un corchete de ángulo izquierdo (<) seguido del nombre de un objeto, por ejemplo, Botón.

  • Defina algunas propiedades y atributos de ese elemento de objeto.

  • El elemento Objeto debe cerrarse con una barra inclinada (/) seguida inmediatamente por un corchete en ángulo recto (>).

Ejemplo de objeto simple sin elemento hijo

<Button/>

Ejemplo de elemento de objeto con algunos atributos

<Button Content = "Click Me" Height = "30" Width = "60" />

Ejemplo de una sintaxis alternativa define propiedades (sintaxis del elemento de propiedad)

<Button> 
   <Button.Content>Click Me</Button.Content> 
   <Button.Height>30</Button.Height> 
   <Button.Width>60</Button.Width> 
</Button>

Ejemplo de objeto con elemento secundario: StackPanel contiene Textblock como elemento secundario

<StackPanel Orientation = "Horizontal"> 
   <TextBlock Text = "Hello"/> 
</StackPanel>

Por qué XAML en WPF

XAML no solo es la característica más conocida de WPF, sino que también es una de las características más incomprendidas. Si tiene exposición a WPF, entonces debe haber oído hablar de XAML; pero tome nota de los siguientes dos hechos menos conocidos sobre XAML:

  • WPF no necesita XAML
  • XAML no necesita WPF

De hecho, son piezas de tecnología separables. Para entender cómo puede ser eso, veamos un ejemplo simple en el que se crea un botón con algunas propiedades en XAML.

<Window x:Class = "WPFXAMLOverview.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "604"> 
	
   <StackPanel> 
      <Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"  
         Margin = "150" VerticalAlignment = "Top" Width = "75" /> 
   </StackPanel> 
	
</Window>

En caso de que elija no usar XAML en WPF, también puede lograr el mismo resultado de GUI con lenguaje de procedimiento. Echemos un vistazo al mismo ejemplo, pero esta vez crearemos un botón en C #.

using System.Windows; 
using System.Windows.Controls;  

namespace WPFXAMLOverview { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary> 
	
   public partial class MainWindow : Window { 
	
      public MainWindow() { 
         InitializeComponent(); 
			
         // Create the StackPanel 
         StackPanel stackPanel = new StackPanel(); 
         this.Content = stackPanel; 
			
         // Create the Button 
         Button button = new Button();
         button.Content = "Click Me"; 
         button.HorizontalAlignment = HorizontalAlignment.Left; 
         button.Margin = new Thickness(150); 
         button.VerticalAlignment = VerticalAlignment.Top; 
         button.Width = 75; 
         stackPanel.Children.Add(button);  
      } 
   } 
}

Cuando compile y ejecute el código XAML o el código C #, verá el mismo resultado que se muestra a continuación.

En el ejemplo anterior, está claro que lo que puede hacer en XAML para crear, inicializar y establecer propiedades de objetos, las mismas tareas también se pueden realizar usando código.

  • XAML es solo otra forma sencilla y fácil de diseñar elementos de la interfaz de usuario.

  • Con XAML, no significa que lo que pueda hacer para diseñar elementos de la interfaz de usuario sea la única forma. Puede declarar los objetos en XAML o definirlos mediante código.

  • XAML es opcional, pero a pesar de esto, está en el corazón del diseño de WPF.

  • El objetivo de XAML es permitir que los diseñadores visuales creen elementos de la interfaz de usuario directamente.

  • WPF tiene como objetivo hacer posible controlar todos los aspectos visuales de la interfaz de usuario desde el marcado.