x:TypeArguments-direktiv
Skickar begränsande typargument för en generisk till konstruktorn av den generiska typen.
XAML-attributanvändning
<object x:TypeArguments="typeString" .../>
XAML-värden
Värde | Beskrivning |
---|---|
object |
En objektelementdeklaration av en XAML-typ som backas upp av en allmän CLR-typ. Om object refererar till en XAML-typ som inte kommer från XAML-standardnamnområdet kräver object ett prefix för att ange XAML-namnområdet där object finns. |
typeString |
En sträng som deklarerar ett eller flera XAML-typnamn som strängar, som tillhandahåller typargumenten för den allmänna CLR-typen. Se Kommentarer för ytterligare syntaxanteckningar. |
Anmärkningar
I de flesta fall prefixeras de XAML-typer som används som ett informationsobjekt i en typeString
sträng. Vanliga typer av allmänna CLR-begränsningar (till exempel Int32 och String) kommer från CLR-basklassbibliotek. Dessa bibliotek mappas inte till typiska ramverksspecifika XAML-standardnamnområden och kräver därför en prefixmappning för XAML-användning.
Du kan ange mer än ett XAML-typnamn med hjälp av en kommaavgränsare.
Om de allmänna begränsningarna i sig använder generiska typer kan argumenten för kapslade villkorstyper innehållas av parenteser ().
Observera att den här definitionen av x:TypeArguments
är specifik för .NET XAML Services och använder CLR-säkerhetskopiering. En definition på språknivå finns i [MS-XAML] Avsnitt 7.3.11.
Användningsexempel
Anta att följande XAML-namnområdesdefinitioner deklareras för dessa exempel:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
Lista<sträng>
<scg:List x:TypeArguments="sys:String" ...>
instansierar en ny List<T> med ett argument av String typ.
Ordlista<sträng, sträng>
<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...>
instansierar en ny Dictionary<TKey,TValue> med två argument av typen String.
Queue<KeyValuePair<String,String>>
<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>
instansierar en ny Queue<T> som har en begränsning på KeyValuePair<TKey,TValue> med argumenten för den inre begränsningstypen String och String.
XAML 2006 och WPF Generic XAML-användning
För XAML 2006-användning och XAML som används för WPF-program finns följande begränsningar för användning av x:TypeArguments
och allmän typ från XAML i allmänhet:
Endast rotelementet i en XAML-fil kan stödja en allmän XAML-användning som refererar till en allmän typ.
Rotelementet måste mappas till en allmän typ med minst ett typargument. Ett exempel är PageFunction<T>. Sidfunktionerna är det primära scenariot för allmänt XAML-användningsstöd i WPF.
Rotelementet XAML-objektelement för det generiska objektet måste också deklarera en partiell klass med hjälp av
x:Class
. Detta gäller även om du definierar en WPF-byggåtgärd.x:TypeArguments
kan inte referera till kapslade allmänna begränsningar.
XAML 2009 eller XAML 2006 utan WPF 3.0 eller WPF 3.5-beroende
I .NET XAML-tjänster för XAML 2006 eller XAML 2009 är WPF-relaterade begränsningar för allmän XAML-användning avslappnade. Du kan instansiera ett generiskt objektelement på valfri plats i XAML-markering som backningstypsystemet och objektmodellen kan stödja.
Om du använder XAML 2009 i stället för att mappa CLR-bastyperna för att hämta XAML-typer för vanliga språkpri primitiver kan du använda inbyggda typer för common XAML Language Primitives som informationsobjekt i en typeString
. Du kan till exempel deklarera följande (prefixmappningar visas inte, men x är XAML-språkets XAML-namnområde för XAML 2009):
<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
I WPF och när du riktar in dig på .NET Framework 4 eller .NET Core 3.0 (eller senare) kan du använda XAML 2009-funktioner tillsammans med x:TypeArguments
men bara för lös XAML (XAML som inte är påläggskompilerad). Påläggskompilerade XAML för WPF och BAML-formen av XAML stöder för närvarande inte XAML 2009-nyckelord och -funktioner. Om du behöver kompilera XAML måste du använda de begränsningar som anges i avsnittet XAML 2006 och WPF Generic XAML Usages. BAML stöds endast i .NET Framework.
Se även
.NET Desktop feedback