Compartir vía


Espacios de nombres XAML en Xamarin.Forms

XAML usa el atributo XML xmlns para las declaraciones de espacio de nombres. En este artículo se presenta la sintaxis del espacio de nombres XAML y muestra cómo declarar un espacio de nombres XAML para acceder a un tipo.

Información general

Hay dos declaraciones de espacio de nombres de XAML que siempre están dentro del elemento raíz de un archivo XAML. La primera define el espacio de nombres predeterminado, como se muestra en el siguiente ejemplo de código XAML:

xmlns="http://xamarin.com/schemas/2014/forms"

El espacio de nombres predeterminado especifica que los elementos definidos en el archivo XAML sin prefijo hacen referencia a clases Xamarin.Forms, como ContentPage.

La segunda declaración de espacio de nombres usa el prefijo x, como se muestra en el siguiente ejemplo de código XAML:

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML usa prefijos para declarar espacios de nombres no predeterminados, con el prefijo que se usa al hacer referencia a tipos dentro del espacio de nombres. La declaración de espacio de nombres x especifica que los elementos definidos dentro del XAML con un prefijo x se usan para elementos y atributos intrínsecos a XAML (en concreto, la especificación XAML 2009).

En la tabla siguiente se describen los atributos de espacio de nombres x que admite Xamarin.Forms:

Construcción Descripción
x:Arguments Especifica argumentos de constructor para un constructor no predeterminado o para una declaración de objeto de método de fábrica.
x:Class Especifica el espacio de nombres y el nombre de clase de una clase definida en XAML. El nombre de clase debe coincidir con el nombre de clase del archivo de código subyacente. Ten en cuenta que esta construcción solo puede aparecer en el elemento raíz de un archivo XAML.
x:DataType Especifica el tipo del objeto al que se enlazará el elemento XAML y los elementos secundarios.
x:FactoryMethod Especifica un método de fábrica que se puede usar para inicializar un objeto.
x:FieldModifier Especifica el nivel de acceso para los campos generados para los elementos XAML con nombre.
x:Key Especifica una clave única definida por el usuario para cada recurso de ResourceDictionary. El valor de la clave se usa para recuperar el recurso XAML y normalmente se usa como argumento para la extensión de marcado StaticResource.
x:Name Especifica un nombre de objeto en tiempo de ejecución para el elemento XAML. La configuración x:Name es similar a la declaración de una variable en código.
x:TypeArguments Especifica los argumentos de tipo genérico para el constructor de un tipo genérico.

Para obtener más información sobre el atributo x:DataType, consulta Enlaces compilados. Para obtener más información sobre el atributo x:FieldModifier, consulta Modificadores de campo. Para obtener más información sobre los atributos x:Arguments y x:FactoryMethod, consulta Paso de argumentos en XAML. Para obtener más información sobre el atributo x:TypeArguments, consulta Genéricos en XAML con Xamarin.Forms.

Nota:

Además de los atributos de espacio de nombres mostrados anteriormente, Xamarin.Forms también incluye extensiones de marcado que se pueden consumir mediante el prefijo de espacio de nombres x. Para obtener más información, consulta Consumo de extensiones de marcado XAML.

En XAML, las declaraciones de espacio de nombres las hereda el elemento secundario del elemento primario. Por lo tanto, al definir un espacio de nombres en el elemento raíz de un archivo XAML, todos los elementos de ese archivo heredan la declaración de espacio de nombres.

Declaración de espacios de nombres para tipos

Se puede hacer referencia a los tipos en XAML declarando un espacio de nombres XAML con un prefijo, con la declaración de espacio de nombres que especifica el nombre del espacio de nombres de Common Language Runtime (CLR) y, opcionalmente, un nombre de ensamblado. Esto se logra definiendo valores para las siguientes palabras clave dentro de la declaración de espacio de nombres:

  • clr-namespace: o using: – el espacio de nombres CLR declarado dentro del ensamblado que contiene los tipos que se exponen como elementos XAML. Esta palabra clave es obligatoria.
  • assembly= – el ensamblado que contiene el espacio de nombres CLR al que se hace referencia. Este valor es el nombre del ensamblado sin la extensión de archivo. La ruta de acceso al ensamblado debe establecerse como referencia en el archivo de proyecto que contiene el archivo XAML que hará referencia al ensamblado. Esta palabra clave se puede omitir si el valor de clr-namespace está dentro del mismo ensamblado que el código de aplicación que hace referencia a los tipos.

Observa que el carácter que separa el token clr-namespace o using de su valor es un signo de dos puntos, mientras que el carácter que separa el token assembly de su valor es un signo igual. El carácter que se usa entre los dos tokens es un punto y coma (;).

En el ejemplo siguiente se muestra una declaración de espacio de nombres XAML:

<ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
  ...
</ContentPage>

Como alternativa, se puede escribir como se indica a continuación:

<ContentPage ... xmlns:local="using:HelloWorld" ...>
  ...
</ContentPage>

El prefijo local es una convención que se usa para indicar que los tipos del espacio de nombres son locales para la aplicación. Como alternativa, si los tipos están en un ensamblado diferente, el nombre del ensamblado también debe definirse en la declaración de espacio de nombres, como se muestra en el ejemplo de código XAML siguiente:

<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  ...
</ContentPage>

Después, se especifica el prefijo de espacio de nombres al declarar una instancia de un tipo de un espacio de nombres importado, como se muestra en el siguiente ejemplo de código XAML:

<ListView ...>
  <ListView.Behaviors>
    <behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
  </ListView.Behaviors>
</ListView>

Para obtener información sobre cómo definir un esquema de espacio de nombres personalizado, consulta Esquemas de espacio de nombres personalizados XAML.

Resumen

En este artículo se ha presentado la sintaxis del espacio de nombres XAML y se ha mostrado cómo declarar un espacio de nombres XAML para acceder a un tipo. XAML usa el atributo XML xmlns para las declaraciones de espacio de nombres y se puede hacer referencia a tipos en XAML declarando un espacio de nombres XAML con un prefijo.