Share via


Espacios de nombres y asignación de espacios de nombres de XAML

Actualización: noviembre 2007

En este tema se explica con mayor detalle la presencia y el propósito de las dos asignaciones de espacio de nombres XML que se encuentran en la etiqueta raíz de cada archivo Lenguaje de marcado de aplicaciones extensible (XAML). También se describe cómo generar asignaciones similares para utilizar elementos definidos en su propio código y/o dentro de ensamblados independientes.

Este tema contiene las secciones siguientes.

  • Declaraciones de espacios de nombres en XAML y WPF
  • Asignar a clases y ensamblados personalizados
  • Asignar espacios de nombres CLR a espacios de nombres XML en un ensamblado
  • Temas relacionados

Declaraciones de espacios de nombres en XAML y WPF

Dentro de las declaraciones de espacios de nombres de la etiqueta raíz de muchos archivos Lenguaje de marcado de aplicaciones extensible (XAML), observará que hay dos declaraciones de espacio de nombres XML. La primera declaración asigna el espacio de nombres de Windows Presentation Foundation (WPF) global como predeterminado:

xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"

La segunda declaración asigna un espacio de nombres Lenguaje de marcado de aplicaciones extensible (XAML) independiente (normalmente) al prefijo x:.

xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"

La relación entre estas declaraciones es que, en realidad, XAML es una definición de lenguaje, y WPF es una implementación que utiliza XAML como un lenguaje. El lenguaje XAML especifica algunos elementos de lenguaje que se da por hecho que están implementados para ofrecer compatibilidad y que cada uno de ellos debe estar accesible a través de implementaciones del procesador XAML que funcionan con el espacio de nombres XAML. La implementación de WPF y su modelo de programación previsto suele utilizar el espacio de nombres XML predeterminado para sus propias API y utiliza un prefijo asignado independiente para la sintaxis de marcado esperada en XAML. Por convención, ese prefijo es x:, que es la misma convención de x: que respetan las plantillas de proyecto, los ejemplos de código y la documentación de las características del lenguaje de este SDK. El espacio de nombres XAML define muchas de las características utilizadas normalmente que son necesarias incluso para las aplicaciones básicas de WPF. Por ejemplo, para combinar cualquier código subyacente con un archivo XAML a través de una clase parcial, debe denominar esa clase como el atributo x:Class del elemento raíz del archivo XAML pertinente. Por otra parte, cualquier elemento definido en una página XAML al que desee obtener acceso como recurso con clave debe tener el atributo x:Key establecido en el elemento en cuestión. Para obtener más información sobre éstos y otros aspectos de XAML vea Información general sobre XAML o Terminología de la sintaxis de XAML.

Asignar a clases y ensamblados personalizados

Puede asignar espacios de nombres XML a ensamblados utilizando una serie de tokens dentro de una declaración de prefijo xmlns, de manera parecida al modo en que se asignan a prefijos los espacios de nombres de WPF y XAML estándar.

La sintaxis acepta los siguientes tokens con nombre posibles y valores:

clr-namespace: Espacio de nombres common language runtime (CLR) declarado dentro del ensamblado que contiene los tipos públicos que se exponen como elementos.

assembly= El ensamblado que contiene la totalidad o parte del espacio de nombres CLR al que se hace referencia. Este valor suele ser solamente el nombre del ensamblado, no su ruta de acceso. La ruta de acceso a ese ensamblado se debe establecer como una referencia de proyecto en el archivo de proyecto que genera el XAML compilado. Opcionalmente, para incorporar la administración de versiones y la firma de nombre seguro, el valor puede ser una cadena de acuerdo con lo definido por AssemblyName.

Observe que el carácter que separa el token clr-namespace 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 utiliza entre estos dos tokens es un punto y coma. Tampoco debe incluir ningún espacio en blanco en ningún lugar de la declaración. Por ejemplo:

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

Asignar a ensamblados actuales

Se pueden omitir assembly si el clr-namespace al que se hace referencia se define dentro del mismo ensamblado que el código de aplicación que hace referencia a las clases personalizadas. Otra sintaxis equivalente para este caso consiste en especificar assembly=, sin ningún token de cadena tras el signo igual.

Las clases personalizadas no se pueden utilizar como elemento raíz de una página si se definen en el mismo ensamblado. No es necesario asignar las clases parciales; únicamente es preciso asignar las clases que no son la clase parcial de una página de la aplicación si piensa hacer referencia a ellas como elementos en XAML.

Asignar espacios de nombres CLR a espacios de nombres XML en un ensamblado

WPF define un atributo CLR que utilizan los procesadores XAML para asignar varios espacios de nombres CLR a un mismo espacio de nombres XML. Este atributo, XmlnsDefinitionAttribute, se coloca en el nivel de ensamblado en el código fuente que genera el ensamblado. El código fuente del ensamblado de WPF utiliza este atributo para asignar los distintos espacios de nombres comunes, como System.Windows y System.Windows.Controls, al espacio de nombres https://schemas.microsoft.com/winfx/2006/xaml/presentation.

XmlnsDefinitionAttribute toma dos parámetros: el nombre del espacio de nombres XML y el nombre del espacio de nombres CLR. Puede haber más de un XmlnsDefinitionAttribute para asignar varios espacios de nombres CLR al mismo espacio de nombres XML. Una vez asignados, si se desea se puede hacer referencia también a los miembros de esos espacios de nombres aunque no estén completos, proporcionando la instrucción using adecuada en la página de código subyacente de la clase parcial. Para obtener más detalles, vea XmlnsDefinitionAttribute.

Vea también

Conceptos

Información general sobre XAML

Otros recursos

Entender los espacios de nombres XML