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 acceder 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 dentro del archivo XAML sin prefijo hacen referencia a Xamarin.Forms clases, como ContentPage .

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

En la tabla siguiente se describen los atributos x de 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 generador.
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 generador 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 StaticResource de marcado.
x:Name Especifica un nombre de objeto en tiempo de ejecución para el elemento XAML. El x:Name valor 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 x:DataType el atributo , vea Enlaces x:DataType Para obtener más información sobre x:FieldModifier el atributo , vea x:FieldModifier. Para obtener más información sobre los x:Arguments atributos y , vea Pasar x:FactoryMethodx:Arguments Para obtener más información sobre el x:TypeArguments atributo , vea Generics in XAML with Xamarin.Forms .

Nota:

Además de los atributos de espacio de nombres enumerados anteriormente, también incluye extensiones de marcado que Xamarin.Forms se pueden consumir a través del prefijo del espacio de x nombres. Para obtener más información, vea Consumo de 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 mediante la definición de 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 una 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 aplicación que hace referencia a los tipos.

Tenga en cuenta que el carácter que separa el token o de su valor es de dos puntos, mientras que el carácter que separa el token de su valor clr-namespaceusing es un signo assembly 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, se puede escribir como:

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

El prefijo es una convención que se usa para indicar que los tipos del espacio de local 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 desde 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, vea Esquemas de espacio de nombres personalizados de XAML.

Resumen

En este artículo se ha presentado la sintaxis de 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 para las declaraciones de espacio de nombres y se puede hacer referencia a los tipos en XAML declarando un espacio de nombres xmlns XAML con un prefijo.