Compartilhar via


Diretiva x:TypeArguments

Passa argumentos de tipo de restrição de um genérico para o construtor do tipo genérico.

Uso do atributo 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.

Observações

Na maioria dos casos, os tipos XAML usados como um item de informação em uma cadeia de caracteres de typeString são prefixados. Tipos típicos de restrições genéricas CLR (por exemplo, Int32 e String) vêm de bibliotecas de classe base CLR. Essas bibliotecas não são mapeadas para namespaces XAML padrão específicos da estrutura típica e, portanto, exigem um mapeamento de prefixo para uso 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 poderão ser contidos por parênteses ().

Observe que essa definição de x:TypeArguments é específica dos Serviços XAML do .NET e do uso do suporte clr. Uma definição de nível de idioma pode ser encontrada no [MS-XAML] Seção 7.3.11.

Exemplos de uso

Para estes 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"

Listar> de cadeia de caracteres de<

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

Cadeia de caracteres de<de dicionário,> de cadeia de caracteres

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

Cadeia de caracteres<keyvaluepair de<de fila, cadeia de caracteres>>

<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 XAML 2006 e WPF Genéricos de XAML

Para uso do XAML 2006 e XAML usado para aplicativos WPF, existem as seguintes restrições para usos de tipo x:TypeArguments e genéricos do 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 de tipo. Um exemplo é PageFunction<T>. As funções de página são o cenário principal para o suporte de uso genérico XAML no WPF.

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

  • x:TypeArguments não pode referenciar restrições genéricas aninhadas.

Dependência do XAML 2009 ou XAML 2006 sem WPF 3.0 ou WPF 3.5

Nos Serviços XAML do .NET para XAML 2006 ou XAML 2009, as restrições relacionadas ao WPF sobre o uso genérico de XAML são relaxadas. Você pode criar uma instância de um elemento de objeto genérico em qualquer posição na marcação XAML à qual o sistema de tipo de backup e o modelo de objeto podem dar suporte.

Se você usar o 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 comuns da linguagem XAML como itens de informações 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 recursos XAML 2009 junto com x:TypeArguments, mas apenas para XAML flexível (XAML que não é compilado por marcação). O XAML compilado por marcação para WPF e a forma BAML de XAML atualmente não dão suporte às palavras-chave e recursos XAML 2009. Se você precisar marcar a compilação do XAML, deverá operar sob as restrições indicadas na seção XAML 2006 e WPF XAML . O BAML só tem suporte no .NET Framework.

Consulte também