Compartir a través de


Espacios de nombres de XAML

XAML usa el atributo XML xmlns para las declaraciones de espacios de nombres. 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:

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

El espacio de nombres predeterminado especifica que los elementos definidos en el archivo de XAML sin prefijo hacen referencia a las clases de la interfaz de usuario de aplicaciones multiplataforma de .NET (.NET MAUI), como ContentPage, Label y Button.

La segunda declaración de espacio de nombres usa el prefijo x:

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 de XAML con un prefijo de x se usan para elementos y atributos que son intrínsecos de XAML (en concreto, la especificación XAML 2009).

La siguiente tabla muestra las construcciones x compatibles con .NET MAUI:

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:ClassModifier Especifica el nivel de acceso de la clase generada en el ensamblado.
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:ClassModifier, consulta Modificadores de clase. 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 Pasar argumentos. Para obtener más información sobre el atributo x:TypeArguments, consulta Genéricos.

Nota:

Además de las construcciones enumeradas anteriormente, .NET MAUI también incluye extensiones de marcado que se pueden consumir mediante el prefijo del espacio de nombres x. Para 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 van a exponer como elementos XAML. Esta palabra clave es obligatoria.
  • assembly=: el ensamblado que contiene la totalidad o parte del 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 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.

Nota:

El carácter que separa el token clr-namespaceusing 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:MyMauiApp">
  ...
</ContentPage>

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

<ContentPage ... xmlns:local="using:MyMauiApp">
  ...
</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:

<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
  ...
</ContentPage>

Después se especifica el prefijo de espacio de nombres al declarar una instancia de un tipo de un espacio de nombres importado:

<controls:Expander IsExpanded="True">
    ...
</controls:Expander>

Para más información sobre cómo definir un esquema de espacio de nombres personalizado, consulta Esquemas de espacio de nombres personalizado.