x:TypeArguments — dyrektywa

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

Użycie atrybutu języka 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 object istnieje.
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, które są używane jako element informacji w ciągu, są poprzedzone prefiksem typeString . 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 ().

Pamiętaj, że ta definicja jest specyficzna x:TypeArguments dla usług XAML platformy .NET i używania kopii zapasowej CLR. Definicję na poziomie języka można znaleźć w sekcji [MS-XAML] 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"

Ciąg listy<>

<scg:List x:TypeArguments="sys:String" ...> tworzy wystąpienie nowego List<T> argumentu String typu.

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

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

Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> tworzy wystąpienie nowego Queue<T> , które ma ograniczenie KeyValuePair<TKey,TValue> z argumentami String typu ograniczeń wewnętrznych i String.

XAML 2006 i WPF Ogólne użycie XAML

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

  • 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. Może to być na przykład 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 klasy x:Class. Jest to prawdą nawet w przypadku definiowania akcji kompilacji WPF.

  • x:TypeArguments program 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 obiekcie 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 elementami x:TypeArguments , ale tylko dla luźnego kodu XAML (XAML, który nie jest skompilowany). 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). BaML jest obsługiwany tylko w programie .NET Framework.

Zobacz też