x:Type — Rozszerzenie znaczników
Dostarcza obiekt CLR Type , który jest podstawowym typem określonego typu XAML.
Użycie atrybutu języka XAML
<object property="{x:Type prefix:typeNameValue}" .../>
Użycie elementu obiektu języka XAML
<x:Type TypeName="prefix:typeNameValue"/>
Wartości XAML
Wartość | Opis |
---|---|
prefix |
Opcjonalny. Prefiks, który mapuje przestrzeń nazw XAML inną niż domyślna. Określanie prefiksu często nie jest konieczne. Zobacz uwagi. |
typeNameValue |
Wymagane. Nazwa typu rozpoznawalna dla bieżącej domyślnej przestrzeni nazw XAML; lub określony zamapowany prefiks, jeśli prefix jest podany. |
Uwagi
Rozszerzenie x:Type
znaczników ma podobną funkcję do typeof()
operatora w języku C# lub GetType
operatora w języku Microsoft Visual Basic.
Rozszerzenie x:Type
znaczników dostarcza zachowanie konwersji z ciągu dla właściwości, które przyjmują typ Type. Dane wejściowe są typem XAML. Relacja między wejściowym typem XAML a wyjściowym clR Type polega na tym, że dane wyjściowe Type są UnderlyingType danymi wejściowymi XamlType, po wyszukaniu niezbędnego XamlType kontekstu schematu XAML i IXamlTypeResolver usłudze, którą zapewnia kontekst.
W usługach XAML platformy .NET obsługa tego rozszerzenia znaczników jest definiowana przez klasę TypeExtension .
W określonych implementacjach struktury niektóre właściwości, które przyjmują Type jako wartość, mogą akceptować nazwę typu bezpośrednio (wartość ciągu typu Name
). Jednak implementacja tego zachowania jest złożonym scenariuszem. Aby zapoznać się z przykładami, zobacz sekcję "Uwagi dotyczące użycia platformy WPF", która jest następująca.
Składnią atrybutu jest składnia najczęściej używana z tym rozszerzeniem znacznika. Token ciągu podany po przypisaniu ciągu identyfikatora x:Type
jako TypeName wartości podstawowej TypeExtension klasy rozszerzenia. W domyślnym kontekście schematu XAML dla usług .NET XAML, który jest oparty na typach CLR, wartość tego atrybutu jest albo Name żądanym typem, lub zawiera Name poprzedzony prefiksem mapowania przestrzeni nazw XAML innej niż domyślna.
Rozszerzenie x:Type
znaczników może być używane w składni elementu obiektu. W takim przypadku określenie wartości TypeName właściwości jest wymagane do prawidłowego zainicjowania rozszerzenia.
Rozszerzenie x:Type
znaczników może być również używane jako pełny atrybut, jednak nie jest to typowe: <object property="{x:Type TypeName=typeNameValue}" .../>
Uwagi dotyczące użycia platformy WPF
Domyślne mapowanie przestrzeni nazw I typów XAML
Domyślna przestrzeń nazw XAML dla programowania WPF zawiera większość typów XAML potrzebnych w typowych scenariuszach XAML; dlatego często można unikać prefiksów podczas odwoływania się do wartości typów XAML. Może być konieczne mapowanie prefiksu, jeśli odwołujesz się do typu z zestawu niestandardowego lub dla typów, które istnieją w zestawie WPF, ale pochodzą z przestrzeni nazw CLR, która nie została zamapowana na domyślną przestrzeń nazw XAML. Aby uzyskać więcej informacji na temat prefiksów, przestrzeni nazw XAML i mapowania przestrzeni nazw CLR, zobacz Przestrzenie nazw XAML i Mapowanie przestrzeni nazw dla WPF XAML.
Właściwości typu, które obsługują typname-as-string
WPF obsługuje techniki, które umożliwiają określanie wartości niektórych właściwości typu Type bez konieczności x:Type
użycia rozszerzenia znaczników. Zamiast tego można określić wartość jako ciąg, który nazywa typ. Przykłady tych elementów to ControlTemplate.TargetType i Style.TargetType. Obsługa tego zachowania nie jest zapewniana za pośrednictwem konwerterów typów lub rozszerzeń znaczników. Zamiast tego jest to zachowanie odroczenia zaimplementowane za pomocą metody FrameworkElementFactory.
Program Silverlight obsługuje podobną konwencję. W rzeczywistości program Silverlight nie obsługuje {x:Type}
obecnie obsługi języka XAML i nie akceptuje {x:Type}
użycia poza kilkoma okolicznościami, które mają obsługiwać migrację XAML WPF-Silverlight. W związku z tym zachowanie typename-as-string jest wbudowane we wszystkich natywnych ocenach właściwości silverlight, gdzie Type wartość jest wartością.
XAML 2009
Język XAML 2009 zapewnia dodatkową obsługę typów ogólnych i modyfikuje zachowanie x:TypeArguments
funkcji oraz x:Type
zapewnia tę obsługę.
x:TypeArguments
i skojarzony element obiektu dla wystąpienia ogólnego obiektu może znajdować się na elementach innych niż katalog główny. Aby uzyskać więcej informacji, zobacz sekcję "XAML 2009" dyrektywy x:TypeArguments.Język XAML 2009 obsługuje składnię określającą ograniczenie typu ogólnego w adiustacji. Może to być używane przez , przez
x:TypeArguments
x:Type
, lub przez dwie funkcje w połączeniu.Implementacja WPF XAML podczas przetwarzania kodu XAML 2009 na potrzeby ładowania dodaje również tę funkcję do niejawnego zachowania konwersji typów dla niektórych właściwości struktury, które używają typu Type.
W WPF można używać funkcji XAML 2009, ale tylko dla luźnego 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.
Zobacz też
.NET Desktop feedback