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
.NET Desktop feedback