Dela via


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