x:Type (Extensión de marcado)x:Type Markup Extension

Proporciona el objeto CLR Type que es el tipo subyacente de un tipo XAML especificado.Supplies the CLR Type object that is the underlying type for a specified XAML type.

Uso de atributos XAMLXAML Attribute Usage

<object property="{x:Type prefix:typeNameValue}" .../>  

Uso de elementos de objeto XAMLXAML Object Element Usage

<x:Type TypeName="prefix:typeNameValue"/>  

Valores XAMLXAML Values

prefix Opcional.Optional. Prefijo que asigna un espacio de nombres XAML no predeterminado.A prefix that maps a non-default XAML namespace. No suele ser necesario especificar un prefijo.Specifying a prefix is frequently not necessary. Vea la sección Comentarios.See Remarks.
typeNameValue Requerido.Required. Un nombre de tipo que se pueda resolver en el espacio de nombres XAML predeterminado actual; o el prefijo asignado especificado si se proporciona prefix.A type name resolvable to the current default XAML namespace; or the specified mapped prefix if prefix is supplied.

ComentariosRemarks

La extensión de marcado x:Type tiene una función similar al operador typeof() en C# o el operador GetType en Microsoft Visual Basic.The x:Type markup extension has a similar function to the typeof() operator in C# or the GetType operator in Microsoft Visual Basic.

La extensión de marcado x:Type proporciona un comportamiento de conversión de cadena para las propiedades que toman el tipo Type.The x:Type markup extension supplies a from-string conversion behavior for properties that take the type Type. La entrada es un tipo XAML.The input is a XAML type. La relación entre el tipo XAML de entrada y el CLR de salida Type es que el Type de salida es el UnderlyingType de la XamlTypede entrada, después de buscar el XamlType necesario basado en el contexto de esquema XAML y el servicio de IXamlTypeResolver que proporciona el contexto.The relationship between the input XAML type and the output CLR Type is that the output Type is the UnderlyingType of the input XamlType, after looking up the necessary XamlType based on XAML schema context and the IXamlTypeResolver service the context provides.

En .NET Framework servicios XAML, el control de esta extensión de marcado se define mediante la clase TypeExtension.In .NET Framework XAML Services, the handling for this markup extension is defined by the TypeExtension class.

En implementaciones específicas de .NET Framework, algunas propiedades que toman Type como valor pueden aceptar el nombre del tipo directamente (el valor de cadena del tipo Name).In specific framework implementations, some properties that take Type as a value can accept the name of the type directly (the string value of the type Name). Sin embargo, la implementación de este comportamiento es un escenario complejo.However, implementing this behavior is a complex scenario. Para obtener ejemplos, vea la sección "Notas de uso de WPF" que aparece a continuación.For examples, see the "WPF Usage Notes" section that follows.

La sintaxis de atributo es la que se usa normalmente con esta extensión de marcado.Attribute syntax is the most common syntax used with this markup extension. El token de cadena que se proporciona después de la cadena de identificador x:Type se asigna como valor de TypeName de la clase de extensión TypeExtension subyacente.The string token provided after the x:Type identifier string is assigned as the TypeName value of the underlying TypeExtension extension class. En el contexto de esquema XAML predeterminado para .NET Framework servicios XAML, que se basa en tipos CLR, el valor de este atributo es el Name del tipo deseado o contiene ese Name precedido por un prefijo para una asignación de espacio de nombres XAML no predeterminada.Under the default XAML schema context for .NET Framework XAML Services, which is based on CLR types, the value of this attribute is either the Name of the desired type, or contains that Name preceded by a prefix for a non-default XAML namespace mapping.

La extensión de marcado de x:Type se puede utilizar en la sintaxis de elementos de objeto.The x:Type markup extension can be used in object element syntax. En este caso, es necesario especificar el valor de la propiedad TypeName para inicializar correctamente la extensión.In this case, specifying the value of the TypeName property is required to properly initialize the extension.

La extensión de marcado x:Type también se puede usar como un atributo detallado; sin embargo, este uso no es típico: <object property="{x:Type TypeName=typeNameValue}" .../>The x:Type markup extension can also be used as a verbose attribute; however this use is not typical: <object property="{x:Type TypeName=typeNameValue}" .../>

Notas de uso de WPFWPF Usage Notes

Asignación de tipos y espacios de nombres XAML predeterminadosDefault XAML Namespace and Type Mapping

El espacio de nombres XAML predeterminado para la programación de WPF contiene la mayoría de los tipos XAML que necesita para escenarios XAML típicos; por lo tanto, a menudo se pueden evitar los prefijos al hacer referencia a valores de tipo XAML.The default XAML namespace for WPF programming contains most of the XAML types you need for typical XAML scenarios; therefore, you can often avoid prefixes when referencing XAML type values. Es posible que necesite asignar un prefijo si hace referencia a un tipo de un ensamblado personalizado o a tipos que existen en un ensamblado de WPF pero que proceden de un espacio de nombres CLR que no se ha asignado al espacio de nombres XAML predeterminado.You might need to map a prefix if you are referencing a type from a custom assembly or for types that exist in a WPF assembly but are from a CLR namespace that was not mapped to the default XAML namespace. Para obtener más información sobre los prefijos, los espacios de nombres XAML y la asignación de espacios de nombres CLR, vea espacios de nombres y asignación de espacios de nombres XAML para WPF.For more information about prefixes, XAML namespaces, and mapping CLR namespaces, see XAML Namespaces and Namespace Mapping for WPF XAML.

Propiedades de tipo que admiten TypeName como cadenaType Properties That Support Typename-as-String

WPF admite técnicas que permiten especificar el valor de algunas propiedades de tipo Type sin requerir un uso de la extensión de marcado x:Type.WPF supports techniques that enable specifying the value of some properties of type Type without requiring an x:Type markup extension usage. En su lugar, puede especificar el valor como una cadena que nombra el tipo.Instead, you can specify the value as a string that names the type. Ejemplos de esto son ControlTemplate.TargetType y Style.TargetType.Examples of this are ControlTemplate.TargetType and Style.TargetType. La compatibilidad con este comportamiento no se proporciona a través de convertidores de tipos o extensiones de marcado.Support for this behavior is not provided through either type converters or markup extensions. En su lugar, se trata de un comportamiento de aplazamiento implementado a través de FrameworkElementFactory.Instead, this is a deferral behavior implemented through FrameworkElementFactory.

Silverlight admite una Convención similar.Silverlight supports a similar convention. De hecho, Silverlight no admite actualmente {x:Type} en su compatibilidad con el lenguaje XAML y no acepta {x:Type} usos fuera de algunas circunstancias que están diseñadas para admitir la migración XAML de WPF-Silverlight.In fact, Silverlight does not currently support {x:Type} in its XAML language support, and does not accept {x:Type} usages outside of a few circumstances that are intended to support WPF-Silverlight XAML migration. Por lo tanto, el comportamiento de tipo TypeName como cadena está integrado en todas las evaluaciones de propiedades nativas de Silverlight, donde un Type es el valor.Therefore, the typename-as-string behavior is built-in to all Silverlight native property evaluation where a Type is the value.

XAML 2009XAML 2009

XAML 2009 proporciona compatibilidad adicional para tipos genéricos y modifica el comportamiento de las características de x:TypeArguments y x:Type para proporcionar esta compatibilidad.XAML 2009 provides additional support for generic types and modifies the feature behavior of x:TypeArguments and x:Type to provide this support.

  • x:TypeArguments y el elemento de objeto asociado para una creación de instancias de objeto genérico pueden estar en elementos distintos de la raíz.x:TypeArguments and the associated object element for a generic object instantiation can be on elements other than the root. Para obtener más información, vea la sección "XAML 2009" de la Directiva x:TypeArguments.For more information, see the "XAML 2009" section of x:TypeArguments Directive.

  • XAML 2009 admite una sintaxis para especificar una restricción de tipo genérico en el marcado.XAML 2009 supports a syntax for specifying a generic type's constraint in markup. Lo pueden usar x:TypeArguments, x:Typeo las dos características en combinación.This can be used by x:TypeArguments, by x:Type, or by the two features in combination.

  • La implementación XAML de WPF cuando se procesa XAML 2009 para la carga también agrega esta funcionalidad al comportamiento de conversión de tipos implícito para ciertas propiedades de .NET Framework que usan el tipo Type.WPF XAML implementation when processing XAML 2009 for load also adds this capability to the implicit type conversion behavior for certain framework properties that use type Type.

En WPF, puede usar las características de XAML 2009, pero solo para XAML dinámico (XAML que no está compilado por marcado).In WPF, you can use XAML 2009 features but only for loose XAML (XAML that is not markup-compiled). XAML compilado por marcado para WPF y el formulario BAML de XAML no admiten de momento las palabras clave y características de XAML 2009.Markup-compiled XAML for WPF and the BAML form of XAML do not currently support the XAML 2009 keywords and features.

Vea tambiénSee also