Udostępnij za pośrednictwem


x:TypeArguments, dyrektywa

Przekazuje argumenty typu ograniczenia typu ogólnego do konstruktora typu ogólnego.

Użycie atrybutu XAML

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

Wartości XAML

Wartość Opis
object Deklaracja elementu obiektu typu XAML, która jest wspierana przez typ ogólny CLR. Jeśli object odwołuje się do typu XAML, który nie pochodzi z domyślnej przestrzeni nazw XAML, object wymaga prefiksu, aby wskazać przestrzeń nazw XAML, w której istnieje object.
typeString Ciąg, który deklaruje co najmniej jedną nazwę typu XAML jako ciągi, która dostarcza argumenty typu dla typu ogólnego CLR. Zobacz Uwagi, aby uzyskać dodatkowe uwagi dotyczące składni.

Uwagi

W większości przypadków typy XAML używane jako element informacji w ciągu typeString są poprzedzone prefiksem. Typowe typy ograniczeń ogólnych CLR (na przykład Int32 i String) pochodzą z bibliotek klas bazowych CLR. Te biblioteki nie są mapowane na typowe domyślne przestrzenie nazw XAML specyficzne dla platformy i dlatego wymagają mapowania prefiksów na potrzeby użycia języka XAML.

Można określić więcej niż jedną nazwę typu XAML przy użyciu ogranicznika przecinka.

Jeśli same ograniczenia ogólne używają typów ogólnych, zagnieżdżone argumenty typu ograniczeń mogą być zawarte przez nawiasy ().

Należy pamiętać, że ta definicja x:TypeArguments jest specyficzna dla usług XAML platformy .NET i używania kopii zapasowej CLR. Definicję na poziomie języka można znaleźć w [MS-XAML] Sekcja 7.3.11.

Przykłady użycia

W tych przykładach przyjęto założenie, że zadeklarowane są następujące definicje przestrzeni nazw XAML:

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

Lista<ciągów>

<scg:List x:TypeArguments="sys:String" ...> tworzy wystąpienie nowej List<T> z argumentem typu String.

Ciąg<słownika,> ciągów

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> tworzy wystąpienie nowego Dictionary<TKey,TValue> z dwoma argumentami typu String.

Kolejka<KeyValuePair<Ciąg,Ciąg>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> tworzy wystąpienie nowej Queue<T>, która ma ograniczenie KeyValuePair<TKey,TValue> z argumentami typu ograniczenia wewnętrznego String i String.

XAML 2006 i WPF Ogólne użycie XAML

W przypadku użycia XAML 2006 i XAML używanego w aplikacjach WPF istnieją następujące ograniczenia dotyczące x:TypeArguments i ogólnego użycia typów z XAML w ogóle:

  • Tylko element główny pliku XAML może obsługiwać ogólne użycie XAML, które odwołuje się do typu ogólnego.

  • Element główny musi być mapowy na typ ogólny z co najmniej jednym argumentem typu. Przykładem jest PageFunction<T>. Funkcje strony są podstawowym scenariuszem obsługi użycia ogólnego XAML w WPF.

  • Element główny elementu obiektu XAML dla klasy ogólnej musi również zadeklarować klasę częściową przy użyciu x:Class. Jest to prawdą nawet w przypadku definiowania akcji kompilacji WPF.

  • x:TypeArguments nie może odwoływać się do zagnieżdżonych ograniczeń ogólnych.

XAML 2009 lub XAML 2006 bez zależności WPF 3.0 lub WPF 3.5

W usługach XAML platformy .NET dla XAML 2006 lub XAML 2009 ograniczenia związane z platformą WPF dotyczące ogólnego użycia XAML są złagodzone. Wystąpienie ogólnego elementu obiektu można utworzyć na dowolnym miejscu w adiustacji XAML, które może obsługiwać system typów zapasowych i model obiektów.

Jeśli używasz języka XAML 2009 zamiast mapowania typów podstawowych CLR do uzyskiwania typów XAML dla typów pierwotnych języka wspólnego, możesz użyć wbudowanych typów dla typowych typów podstawowych języka XAML jako elementów informacji w typeString. Można na przykład zadeklarować następujące (mapowania prefiksów nie są wyświetlane, ale x to przestrzeń nazw XAML języka XAML dla języka XAML 2009):

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

W WPF i w przypadku określania wartości docelowej dla platformy .NET Framework 4 lub .NET Core 3.0 (lub nowszej) można używać funkcji XAML 2009 razem z x:TypeArguments, ale tylko w przypadku luźnego kodu XAML (XAML, który nie jest skompilowany znacznikami). Kod XAML skompilowany w języku XAML dla platformy WPF i formularza BAML języka XAML nie obsługuje obecnie słów kluczowych i funkcji XAML 2009. Jeśli musisz znaczników skompilować kod XAML, musisz działać zgodnie z ograniczeniami zanotowanymi w sekcji XAML 2006 i WPF Generic XAML Usages (Ogólne użycie XAML WPF) sekcji. BaML jest obsługiwany tylko w programie .NET Framework.

Zobacz też