Compartilhar via


Diretiva x:TypeArguments

Passa argumentos de tipo restritivo 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 será necessário 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ções em uma typeString cadeia de caracteres são prefixados. 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 em 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 é específica para os Serviços XAML do x:TypeArguments .NET e usando o suporte CLR. Uma definição de nível de idioma pode ser encontrada na Seção 7.3.11 do [MS-XAML].

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<Cadeia de caracteres>

<scg:List x:TypeArguments="sys:String" ...> Instancia um novo List<T> com um String argumento type.

Cadeia de dicionário,String<>

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

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 com os argumentos String do KeyValuePair<TKey,TValue> tipo restrição interna e String.

Usos genéricos de XAML 2006 e WPF

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

  • Somente o elemento raiz de um arquivo XAML pode oferecer 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 suporte de uso genérico XAML no WPF.

  • O elemento de objeto XAML do elemento raiz para o genérico também deve declarar uma classe parcial usando x:Class. Isso é verdadeiro mesmo se definir 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 do 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 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 o XAML 2009 em vez de mapear os tipos base do CLR para obter tipos XAML para primitivas de linguagem comum, poderá usar Tipos internos para primitivas de linguagem XAML comuns como itens de informação em um typeStringarquivo . 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 juntos x:TypeArguments , mas somente para XAML solto (XAML que não é compilado por marcação). Atualmente, o XAML compilado por marcação para WPF e a forma BAML de XAML não oferecem suporte às palavras-chave e aos recursos do XAML 2009. Se você precisar de marcação para compilar o XAML, deverá operar sob as restrições observadas na seção Usos genéricos de XAML do XAML 2006 e do WPF. O BAML só tem suporte no .NET Framework.

Confira também