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 se muestra cómo declarar un espacio de nombres XAML para tener acceso a un tipo.

Información general

Hay dos declaraciones de espacio de nombres 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 Xamarin.Forms clases, como ContentPage.

La segunda declaración de espacio de nombres usa el x prefijo, 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 x declaración de espacio de nombres especifica que los elementos definidos dentro del XAML con un prefijo de x se usan para elementos y atributos intrínsecos a XAML (específicamente la especificación XAML 2009).

En la tabla siguiente se describen los atributos de x espacio de nombres admitidos por 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. Tenga 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 sus 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 se usa normalmente como argumento para la StaticResource extensión de marcado.
x:Name Especifica un nombre de objeto en tiempo de ejecución para el elemento XAML. La configuración x:Name es similar a declarar una variable en el 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 x:DataType atributo, vea Enlaces compilados. Para obtener más información sobre el x:FieldModifier atributo, vea Modificadores de campo. Para obtener más información sobre los x:Arguments atributos y x:FactoryMethod , vea Pasar argumentos en XAML. Para obtener más información sobre el x:TypeArguments atributo , vea Genéricos en XAML con Xamarin.Forms.

Nota

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

En XAML, las declaraciones de espacio de nombres heredan del elemento primario al elemento secundario. 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.

Declarar 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 del espacio de nombres:

  • clr-namespace: o using: el espacio de nombres CLR declarado en el ensamblado que contiene los tipos que se van a exponer como elementos XAML. Esta palabra clave es necesaria.
  • assembly= : 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 clr-namespace está dentro del mismo ensamblado que el código de la aplicación que hace referencia a los tipos.

Tenga en cuenta que el carácter que separa el clr-namespace token o using de su valor es de dos puntos, mientras que el carácter que separa el assembly token de su valor es un signo igual. El carácter que se va a usar entre los dos tokens es un punto y coma.

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

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

Como alternativa, esto se puede escribir como:

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

El local prefijo 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 siguiente ejemplo de código XAML:

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

A continuación, 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 introdujo la sintaxis del espacio de nombres XAML y se mostró cómo declarar un espacio de nombres XAML para acceder a un tipo. XAML usa el xmlns atributo XML 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.