Direttiva x:TypeArguments
Passa gli argomenti di tipo con vincolo di un generico al costruttore del tipo generico.
Utilizzo degli attributi XAML
<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 esiste object . |
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 di informazioni in una stringa typeString
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 x:TypeArguments
è specifica per i servizi XAML .NET e l'uso del backup CLR. Una definizione a livello di linguaggio è disponibile in [MS-XAML] Sezione 7.3.11.
Esempi di utilizzo
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"
Elencare> stringhe di<
<scg:List x:TypeArguments="sys:String" ...>
crea un'istanza di un nuovo List<T> con un argomento di tipo String.
Dictionary<String,String>
<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...>
crea un'istanza di un nuovo Dictionary<TKey,TValue> con due argomenti di tipo String.
Queue<KeyValuePair<String,String>>
<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>
crea un'istanza di un nuovo Queue<T> con un vincolo di KeyValuePair<TKey,TValue> con gli argomenti del tipo di vincolo interno String 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
e gli utilizzi di tipi generici da 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 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 a x:TypeArguments
, ma solo per XAML libero (XAML non compilato dal markup). XAML compilato con markup per WPF e il formato BAML di XAML attualmente non supportano le parole chiave e le funzionalità 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.
Vedere anche
.NET Desktop feedback