Partilhar via


x:Diretiva TypeArguments

Passa argumentos de tipo restrito de um genérico para o construtor do tipo genérico.

Uso de atributos XAML

<object x:TypeArguments="typeString" .../>

Valores XAML

Valor Descrição
object Uma declaração de elemento de objeto de um tipo XAML, que é apoiada por um tipo genérico CLR. Se object se referir a um tipo XAML que não seja do namespace XAML padrão, object exigirá um prefixo para indicar o namespace XAML onde object existe.
typeString Uma cadeia de caracteres que declara um ou mais nomes de tipo XAML como cadeias de caracteres, que fornece os argumentos de tipo para o tipo genérico CLR. Consulte Comentários para obter notas de sintaxe adicionais.

Comentários

Na maioria dos casos, os tipos XAML usados como um item de informação em uma cadeia de caracteres typeString são prefixados. Os tipos típicos de restrições genéricas CLR (por exemplo, Int32 e String) vêm de bibliotecas de classes base CLR. Essas bibliotecas não são mapeadas para namespaces XAML padrão típicos específicos da estrutura e, portanto, exigem um mapeamento de prefixo para uso de XAML.

Você pode especificar mais de um nome de tipo XAML usando um delimitador de vírgula.

Se as próprias restrições genéricas usarem tipos genéricos, os argumentos de tipo de restrição aninhados podem ser contidos por parênteses ().

Observe que essa definição de x:TypeArguments é específica para Serviços XAML .NET e usando o suporte CLR. Uma definição de nível de idioma pode ser encontrada em [MS-XAML] Seção 7.3.11.

Exemplos de uso

Para esses exemplos, suponha que as seguintes definições de namespace XAML sejam declaradas:

xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"

Lista<String>

<scg:List x:TypeArguments="sys:String" ...> instancia um novo List<T> com um argumento de tipo String.

Dicionário<String,String>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> instancia um novo Dictionary<TKey,TValue> com dois argumentos de tipo String.

Fila<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> instancia um novo Queue<T> que tem uma restrição de KeyValuePair<TKey,TValue> com os argumentos de tipo de restrição interna String e String.

Usos de XAML genérico XAML 2006 e WPF

Para o uso de XAML 2006 e XAML usado para aplicativos WPF, existem as seguintes restrições para usos de tipo x:TypeArguments e genérico de XAML em geral:

  • Somente o elemento raiz de um arquivo XAML pode dar suporte a um uso XAML genérico que faz referência a um tipo genérico.

  • O elemento raiz deve ser mapeado para um tipo genérico com pelo menos um argumento type. Um exemplo é PageFunction<T>. As funções de página são o cenário principal para o suporte ao uso genérico XAML no WPF.

  • O elemento raiz do elemento de objeto XAML para o genérico também deve declarar uma classe parcial usando x:Class. Isso é verdade mesmo se estiver definindo uma ação de compilação do WPF.

  • x:TypeArguments não pode fazer referência a restrições genéricas aninhadas.

XAML 2009 ou XAML 2006 sem dependência de WPF 3.0 ou WPF 3.5

Nos Serviços XAML .NET para XAML 2006 ou XAML 2009, as restrições relacionadas ao WPF sobre o uso de XAML genérico são relaxadas. Você pode instanciar um elemento de objeto genérico em qualquer posição na marcação XAML que o sistema de tipo de suporte e o modelo de objeto possam suportar.

Se você usar XAML 2009 em vez de mapear os tipos base CLR para obter tipos XAML para primitivos de linguagem comum, poderá usar Tipos Internos para Primitivos de Linguagem XAML Comum como itens de informação em um typeString. Por exemplo, você pode declarar o seguinte (mapeamentos de prefixo não mostrados, mas x é o namespace XAML da linguagem XAML para XAML 2009):

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

No WPF e ao direcionar o .NET Framework 4 ou o .NET Core 3.0 (ou posterior), você pode usar os recursos do XAML 2009 junto com o x:TypeArguments mas apenas para XAML solto (XAML que não é compilado por marcação). Atualmente, o XAML compilado por marcação para WPF e o formulário BAML de XAML não suportam atualmente as palavras-chave e os recursos do XAML 2009. Se precisar marcar a compilação do XAML, você deve operar sob as restrições observadas na seção XAML 2006 e Usos Genéricos de XAML do WPF. O BAML só é suportado no .NET Framework.

Ver também