x:Class (Directiva)

Configura la compilación de marcado de XAML para unir clases parciales entre el marcado y el código subyacente. La clase parcial de código se define en un archivo de código separado en lenguaje Common Language Specification (CLS), y la clase parcial de marcado se crea normalmente mediante la generación del código durante la compilación de XAML.

Uso de atributos XAML

<object x:Class="namespace.classname"...>
  ...
</object>

Valores XAML

Value Descripción
namespace Opcional. Especifica un espacio de nombres CLR que contiene la clase parcial identificada por classname. Si se especifica namespace, un punto (.) separa namespace y classname. Vea la sección Comentarios.
classname Obligatorio. Especifica el nombre CLR de la clase parcial que conecta el XAML cargado y el código subyacente para ese XAML.

Dependencias

x:Class solo se puede especificar en el elemento raíz de una producción XAML. x:Class no es válido en ningún objeto que tenga un elemento primario en la producción XAML. Para obtener más información, vea [MS-XAML] Sección 6.3.1.6.

Comentarios

El valor namespace puede contener puntos adicionales para organizar espacios de nombres relacionados en jerarquías de nombres, que es una técnica común en la programación de .NET. Solo el último punto de una cadena de valores x:Class se interpreta para separar namespace y classname.. La clase que se usa como x:Class no puede ser una clase anidada. No se permiten clases anidadas porque determinar el significado de los puntos para las cadenas x:Class es ambiguo si se permiten las clases anidadas.

En los modelos de programación existentes que usan x:Class, x:Class es opcional, en el sentido de que es totalmente válido tener una página XAML que no tiene código subyacente. Sin embargo, esa funcionalidad interactúa con las acciones de compilación implementadas por marcos que usan XAML. La funcionalidad x:Class también se ve afectada por los roles que tienen varias clasificaciones de contenido especificado por XAML en un modelo de aplicación y en las acciones de compilación correspondientes. Si el XAML declara valores de atributo de control de eventos o crea instancias de elementos personalizados en los que las clases de definición están en la clase de código subyacente, se debe proporcionar la referencia de directiva x:Class (o x:Subclass) a la clase adecuada para el código subyacente.

El valor de la directiva x:Class debe ser una cadena que especifique el nombre completo de una clase, pero sin ninguna información de ensamblado (equivalente al Type.FullName). En el caso de las aplicaciones sencillas puede omitir la información del espacio de nombres CLR si el código subyacente también está estructurado de esa manera (la definición de código comienza en el nivel de clase).

El archivo de código subyacente de una definición de página o de aplicación debe estar dentro de un archivo de código que se incluya como parte del proyecto que produce una aplicación compilada e involucra a la compilación de marcado. Debe seguir las reglas de nombre para las clases CLR. Para obtener más información, consulte Directrices para el diseño de marcos. De forma predeterminada, la clase de código subyacente debe ser public; sin embargo, puede definirla en un nivel de acceso diferente mediante la directiva x:ClassModifier.

Esta interpretación del atributo x:Class solo se aplica a una implementación XAML basada en CLR, en particular a los servicios XAML de .NET. Otras implementaciones XAML que no se basan en CLR y que no usan servicios XAML de .NET pueden usar una fórmula de resolución diferente para conectar el marcado XAML y el código en tiempo de ejecución de respaldo. Para obtener más información sobre las interpretaciones más generales de x:Class, consulte [MS-XAML].

En un nivel de arquitectura dado, el significado de x:Class no está definido en los servicios XAML de .NET. Esto se debe a que los servicios XAML de .NET no especifican el modelo de programación por el que se conectan el marcado XAML y el código de respaldo. Los usos adicionales de la directiva x:Class pueden implementarse mediante marcos específicos que usan modelos de programación o modelos de aplicación para definir cómo conectar el marcado XAML y el código subyacente basado en CLR. Cada marco puede tener sus propias acciones de compilación que habilitan parte del comportamiento o componentes específicos que se deben incluir en el entorno de compilación. Dentro de un marco las acciones de compilación también pueden variar en función del lenguaje CLR específico que se use para el código subyacente.

x:Class en el modelo de programación de WPF

En las aplicaciones WPF y el modelo de aplicación de WPF, x:Class se puede declarar como un atributo para cualquier elemento que sea la raíz de un archivo XAML y se compile (donde el XAML se incluye en un proyecto de aplicación WPF con la acción de compilación Page) o para la raíz Application en la definición de aplicación de una aplicación WPF compilada. Declarar x:Class en un elemento que no sea una raíz de página o raíz de aplicación, o en un archivo XAML de WPF que no esté compilado, produce un error en tiempo de compilación en el compilador XAML de WPF del .NET Framework 3.0 y del .NET Framework 3.5. Para obtener información sobre otros aspectos de control x:Class en WPF, consulte Código subyacente y XAML en WPF.

x:Class para Windows Workflow Foundation

Para Windows Workflow Foundation, x:Class asigna un nombre a la clase de una actividad personalizada compuesta en XAML en su totalidad, o bien asigna un nombre a la clase parcial de la página XAML para un diseñador de actividad con código subyacente.

Notas de uso de Silverlight

x:Class para Silverlight se documenta por separado. Para obtener más información, consulte Características de lenguaje (x:) del espacio de nombres de XAML (Silverlight).

Vea también