Marcação de Extensão x:Type
Fornece o CLR Type objeto que é o tipo subjacente para um tipo XAML especificado.
XAML Attribute Usage
<object property="{x:Type prefix:typeNameValue}" .../>
XAML Object Element Usage
<x:Type TypeName="prefix:typeNameValue"/>
XAML Values
prefix |
Optional. Um prefixo que mapeia um namespace XAML não-padrão. Especificar um prefixo com freqüência não é necessário. Consulte comentários. |
typeNameValue |
Required. Um nome de tipo que possa ser convertido para o namespace XAML padrão atual; ou o mapeado especificado prefixo se prefix é fornecido. |
Comentários
O x:Type a extensão de marcação tem uma função semelhante a typeof() operador na C# ou o GetType operador na Microsoft Visual Basic.
O x:Type a extensão de marcação fornece um comportamento de conversão de seqüência de caracteres para propriedades que tenham o tipo de Type. A entrada é um tipo XAML. A relação entre o tipo de entrada de XAML e a saída do CLR Type é que a saída Type é o UnderlyingType da entrada XamlType, após pesquisar os necessários XamlType com base no contexto do esquema XAML e o IXamlTypeResolver a fornece o contexto de serviço.
No.NET Framework XAML Services, o tratamento para a extensão de marcação é definido pelo TypeExtension classe.
Implementações de estruturas específicas, algumas propriedades que tomar Type como um valor pode aceitar o nome do tipo diretamente (o valor de seqüência de caracteres do tipo Name). No entanto, a implementação desse comportamento é um cenário complexo. Para obter exemplos, consulte as "notas de uso do WPF" seção a seguir.
Attribute syntax is the most common syntax used with this markup extension. The string token provided after the x:Type identifier string is assigned as the TypeName value of the underlying TypeExtension extension class. Sob o contexto de esquema XAML padrão para.NET Framework XAML Services, que é baseado em tipos CLR, o valor desse atributo é o Name do tipo desejado, ou contém que Name precedido por um prefixo para um mapeamento de não-padrão namespace XAML.
O x:Type a extensão de marcação pode ser usada na sintaxe de elemento de objeto. In this case, specifying the value of the TypeName property is required to properly initialize the extension.
O x:Type a extensão de marcação também pode ser usada como um atributo detalhado; No entanto, esse uso não é típico: <object property="{x:Type TypeName=typeNameValue}" .../>
Notas de uso do WPF
Namespace XAML e digite o mapeamento padrão
O namespace XAML padrão para programação do WPF contém a maioria dos tipos de XAML, que você precisa para cenários típicos de XAML; Portanto, você pode evitar muitas vezes prefixos ao fazer referência a valores de tipo XAML. Talvez seja necessário mapear um prefixo, se você estiver consultando um tipo de um assembly personalizado ou para tipos que existem em um assembly do WPF, mas são de um namespace CLR que não foi mapeado para o namespace XAML padrão. Para obter mais informações sobre namespaces do CLR de mapeamento, namespaces XAML e prefixos, consulte Namespaces XAML e o mapeamento de Namespace para WPF XAML.
Digite as propriedades que suporte Typename as String
WPF suporta técnicas que permitem especificar o valor de algumas propriedades do tipo Type sem a necessidade de um x:Type uso de extensão de marcação. Em vez disso, você pode especificar o valor como uma seqüência de caracteres que nomeia o tipo. Exemplos ControlTemplate.TargetType e Style.TargetType. Suporte para esse comportamento não é fornecido por meio de conversores de tipo ou extensões de marcação. Em vez disso, este é um comportamento de adiamento implementado por meio de FrameworkElementFactory.
O Silverlight oferece suporte a uma convenção similar. Na verdade, o Silverlight não oferece suporte atualmente {x:Type} em seu suporte a linguagem XAML e não aceita {x:Type} usos fora de algumas circunstâncias, que servem para dar suporte à migração de XAML do Silverlight do WPF. Portanto, o comportamento de typename como seqüência de caracteres é incorporado a avaliação da propriedade nativo de Silverlight todos os onde uma Type é o valor.
XAML 2009
XAML 2009 fornece suporte adicional para os tipos de genéricos e modifica o comportamento do recurso de x:TypeArguments e x:Type para fornecer suporte.
x:TypeArgumentse o elemento de objeto associado para uma instanciação de objeto genérico que pode ser em elementos diferente da raiz. Para obter mais informações, consulte "2009 de XAML" seção de Diretiva de X:TypeArguments.
XAML 2009 oferece suporte a uma sintaxe para especificar a restrição de um tipo genérico na marcação. Isso pode ser usado por x:TypeArguments, por x:Type, ou pelos dois recursos na combinação.
Implementação do WPF XAML ao processar o XAML de 2009 para carga também adiciona esse recurso para o comportamento de conversão de tipo implícito para certas propriedades do framework que usam o tipo de Type.
No WPF, você pode usar o recursos de 2009 de XAML, mas apenas para o XAML livre (XAML não é marcação-compilado). Compilado de marcação XAML para WPF e o formulário BAML do XAML não suportam atualmente os recursos e palavras-chave de XAML de 2009.