Direttiva x:TypeArguments

Passa gli argomenti di tipo con vincolo di un generico al costruttore del tipo generico.

Uso della sintassi XAML per gli attributi

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

Valori XAML

Valore Descrizione
object Dichiarazione dell'elemento oggetto di un tipo XAML, supportato da un tipo generico CLR. Se object fa riferimento a un tipo XAML che non proviene dallo spazio dei nomi XAML predefinito, object richiede un prefisso per indicare lo spazio dei nomi XAML in cui object esiste.
typeString Stringa che dichiara uno o più nomi di tipo XAML come stringhe, che fornisce gli argomenti di tipo per il tipo generico CLR. Per altre note sulla sintassi, vedere Note sulla sintassi.

Osservazioni

Nella maggior parte dei casi, i tipi XAML usati come elemento informativo in una typeString stringa sono preceduti da un prefisso. I tipi tipici di vincoli generici CLR (ad esempio, Int32 e String) provengono da librerie di classi di base CLR. Tali librerie non vengono mappate a tipici spazi dei nomi XAML predefiniti specifici del framework e pertanto richiedono un mapping del prefisso per l'utilizzo di XAML.

Puoi specificare più di un nome di tipo XAML usando un delimitatore da virgole.

Se i vincoli generici usano tipi generici, gli argomenti del tipo di vincolo annidato possono essere contenuti tra parentesi ().

Si noti che questa definizione di è specifica per x:TypeArguments i servizi XAML .NET e l'uso del backup CLR. Una definizione a livello di linguaggio è disponibile nella sezione [MS-XAML] 7.3.11.

Esempi di uso

Per questi esempi, si supponga che le definizioni dello spazio dei nomi XAML seguenti siano dichiarate:

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

List<String>

<scg:List x:TypeArguments="sys:String" ...> crea un'istanza di un nuovo List<T> oggetto con un String argomento di tipo.

String del<dizionario, stringa>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> crea un'istanza di un nuovo Dictionary<TKey,TValue> oggetto con due String argomenti di tipo.

Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> crea un'istanza di un nuovo Queue<T> oggetto con un vincolo di KeyValuePair<TKey,TValue> con gli String argomenti del tipo di vincolo interno e String.

Utilizzo XAML 2006 e XAML generico WPF

Per l'utilizzo di XAML 2006 e XAML usato per le applicazioni WPF, esistono le restrizioni seguenti per x:TypeArguments gli utilizzi di tipi generici e xaml in generale:

  • Solo l'elemento radice di un file XAML può supportare un utilizzo XAML generico che fa riferimento a un tipo generico.

  • L'elemento radice deve eseguire il mapping a un tipo generico con almeno un argomento di tipo. Un esempio è PageFunction<T>. Le funzioni di pagina sono lo scenario principale per il supporto dell'utilizzo generico XAML in WPF.

  • L'elemento dell'oggetto XAML dell'elemento radice per il generico deve anche dichiarare una classe parziale usando x:Class. Questo vale anche se si definisce un'azione di compilazione WPF.

  • x:TypeArguments non può fare riferimento a vincoli generici annidati.

XAML 2009 o XAML 2006 senza dipendenze WPF 3.0 o WPF 3.5

In Servizi XAML .NET per XAML 2006 o XAML 2009, le restrizioni correlate a WPF sull'utilizzo XAML generico sono disattivate. È possibile creare un'istanza di un elemento oggetto generico in qualsiasi posizione nel markup XAML supportato dal sistema del tipo di supporto e dal modello a oggetti.

Se usi XAML 2009 invece di eseguire il mapping dei tipi di base CLR per ottenere i tipi XAML per le primitive del linguaggio comune, puoi usare tipi predefiniti per primitive del linguaggio XAML comuni come elementi di informazioni in un oggetto typeString. Ad esempio, puoi dichiarare quanto segue (mapping dei prefissi non visualizzati, ma x è lo spazio dei nomi XAML del linguaggio XAML per XAML 2009):

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

In WPF e quando la destinazione è .NET Framework 4 o .NET Core 3.0 (o versione successiva), è possibile usare le funzionalità XAML 2009 insieme, x:TypeArguments ma solo per XAML libero (XAML non compilato dal markup). Il codice XAML compilato dal markup per WPF e il modulo BAML di XAML non supportano attualmente le parole chiave e le funzionalità di XAML 2009. Se devi compilare il codice XAML, devi operare in base alle restrizioni indicate nella sezione Xaml 2006 e utilizzo XAML generico WPF. BAML è supportato solo in .NET Framework.

Vedi anche