Sdílet prostřednictvím


x:TypeArguments – direktiva

Předá argumenty omezujícího typu obecného konstruktoru obecného typu.

Použití atributu XAML

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

Hodnoty XAML

Hodnota Popis
object Deklarace elementu objektu typu XAML, která je podporována obecným typem CLR. Pokud object odkazuje na typ XAML, který není z výchozího oboru názvů XAML, object k označení oboru názvů XAML, kde object existuje, vyžaduje předponu.
typeString Řetězec, který deklaruje jeden nebo více názvů typů XAML jako řetězce, který poskytuje argumenty typu pro obecný typ CLR. Další poznámky ke syntaxi najdete v poznámkách.

Poznámky

Ve většině případů jsou typy XAML, které se používají jako informační položka v řetězci typeString, předpony. Typické typy obecných omezení CLR (například Int32 a String) pocházejí z knihoven základních tříd CLR. Tyto knihovny nejsou mapovány na typické výchozí obory názvů XAML specifické pro architekturu, a proto vyžadují mapování předpon pro použití XAML.

Pomocí oddělovače čárky můžete zadat více než jeden název typu XAML.

Pokud samotná obecná omezení používají obecné typy, mohou být argumenty vnořeného typu omezení obsaženy v závorkách ().

Všimněte si, že tato definice x:TypeArguments je specifická pro služby .NET XAML a použití backingu CLR. Definice na úrovni jazyka najdete v [MS-XAML] Oddíl 7.3.11.

Příklady použití

V těchto příkladech předpokládejme, že jsou deklarovány následující definice oboru názvů XAML:

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

> řetězce seznamu<

<scg:List x:TypeArguments="sys:String" ...> vytvoří instanci nového List<T> s argumentem typu String.

<řetězec slovníku, řetězcový>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> vytvoří instanci nového Dictionary<TKey,TValue> se dvěma argumenty typu String.

Queue<KeyValuePair<String, String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> vytvoří instanci nového Queue<T>, který má omezení KeyValuePair<TKey,TValue> s argumenty typu vnitřního omezení String a String.

Obecná použití XAML 2006 a WPF XAML

Pro použití XAML 2006 a XAML, který se používá pro aplikace WPF, existují následující omezení pro x:TypeArguments a obecné použití typů z XAML obecně:

  • Obecné použití XAML, které odkazuje na obecný typ, může podporovat pouze kořenový prvek souboru XAML.

  • Kořenový prvek musí být mapovat na obecný typ s alespoň jedním argumentem typu. Příkladem je PageFunction<T>. Funkce stránky jsou primárním scénářem podpory obecného použití XAML ve WPF.

  • Kořenový element XAML objekt element pro obecné musí také deklarovat částečnou třídu pomocí x:Class. To platí i v případě, že definujete akci sestavení WPF.

  • x:TypeArguments nemůže odkazovat na vnořená obecná omezení.

XAML 2009 nebo XAML 2006 s žádnou závislostí WPF 3.0 nebo WPF 3.5

Ve službách .NET XAML pro XAML 2006 nebo XAML 2009 jsou omezení související s WPF u obecného použití XAML uvolněná. V kódu XAML, který podporuje systém backingového typu a objektový model, můžete vytvořit instanci obecného objektového prvku na libovolném místě.

Pokud místo mapování základních typů CLR použijete XAML 2009 k získání typů XAML pro běžné jazykové primitivy, můžete použít předdefinované typy pro common XAML Language Primitives jako informační položky v typeString. Můžete například deklarovat následující (mapování předpon se nezobrazují, ale x je obor názvů XAML jazyka XAML pro XAML 2009):

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

Ve WPF a při cílení na rozhraní .NET Framework 4 nebo .NET Core 3.0 (nebo novější) můžete používat funkce XAML 2009 společně s x:TypeArguments, ale pouze pro volný KÓD XAML (XAML, který není zkompilován značek). Kód XAML zkompilovaný pro WPF a formát BAML XAML v současné době nepodporují klíčová slova a funkce XAML 2009. Pokud potřebujete zkompilovat KÓD XAML, musíte pracovat s omezeními uvedenými v oddílu XAML 2006 a WPF Generic XAML Usages. BAML je podporován pouze v rozhraní .NET Framework.

Viz také