x:Array Markup Extension
Zapewnia ogólną obsługę tablic obiektów w języku XAML za pośrednictwem rozszerzenia znaczników. Odpowiada to typowi XAML x:ArrayExtension
[MS-XAML].
Użycie elementu obiektu XAML
<x:Array Type="typeName">
arrayContents
</x:Array>
Wartości XAML
Wartość | Opis |
---|---|
typeName |
Nazwa typu, który będzie zawierał x:Array .
typeName może być (i często jest) prefiksem dla przestrzeni nazw XAML zawierającej definicje typów XAML. |
arrayContents |
Zawartość elementów przypisana do właściwości wewnętrznej ArrayExtension.Items . Zazwyczaj te elementy są określane jako co najmniej jeden element obiektu znajdujący się w x:Array otwierania i zamykania tagów. Obiekty określone w tym miejscu powinny być przypisywane do typu XAML określonego w typeName . |
Uwagi
Type
jest wymaganym atrybutem dla wszystkich elementów obiektów x:Array
. Wartość parametru Type
nie musi używać rozszerzenia znaczników x:Type
; krótka nazwa typu jest typem XAML, który można określić jako ciąg.
W implementacji usług XAML platformy .NET relacja między typem wejściowego XAML a wyjściowym Type utworzonej tablicy ma wpływ na kontekst usługi dla rozszerzeń znaczników. Dane wyjściowe Type to UnderlyingType wejściowego typu XAML, po wyszukaniu niezbędnych XamlType opartych na kontekście schematu XAML i usłudze IXamlTypeResolver zapewniany przez kontekst.
Podczas przetwarzania zawartość tablicy jest przypisywana do właściwości wewnętrznej ArrayExtension.Items
. W implementacji ArrayExtension jest to reprezentowane przez ArrayExtension.Items.
W implementacji usług XAML platformy .NET obsługa tego rozszerzenia znaczników jest definiowana przez klasę ArrayExtension. ArrayExtension nie jest zapieczętowana i może być używana jako podstawa implementacji rozszerzenia znaczników dla niestandardowego typu tablicy.
x:Array
jest bardziej przeznaczona do rozszerzalności języka ogólnego w języku XAML. Jednak x:Array
mogą być również przydatne do określania wartości XAML niektórych właściwości, które przyjmują kolekcje obsługiwane przez język XAML jako zawartość właściwości ustrukturyzowanych. Można na przykład określić zawartość właściwości IEnumerable przy użyciu x:Array
.
x:Array
jest rozszerzeniem znaczników. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje wymóg ucieczki wartości atrybutów, które mają być inne niż wartości literału lub nazwy procedur obsługi, a wymaganie jest bardziej globalne niż tylko umieszczenie konwerterów typów na niektórych typach lub właściwościach.
x:Array
jest częściowo wyjątkiem od tej reguły, ponieważ zamiast zapewniania alternatywnej obsługi wartości atrybutów, x:Array
zapewnia alternatywną obsługę jego wewnętrznej zawartości tekstowej. To zachowanie umożliwia grupowanie typów, które mogą nie być obsługiwane przez istniejący model zawartości w tablicy i przywoływane później w kodzie przez uzyskanie dostępu do nazwanej tablicy; Metody Array można wywołać, aby pobrać poszczególne elementy tablicy.
Wszystkie rozszerzenia znaczników w języku XAML używają nawiasów klamrowych ({,})
w ich składni atrybutu, która jest konwencją, zgodnie z którą procesor XAML rozpoznaje, że rozszerzenie znaczników musi przetworzyć wartość atrybutu. Aby uzyskać więcej informacji na temat rozszerzeń znaczników w ogóle, zobacz Type Converters and Markup Extensions for XAML.
W języku XAML 2009 x:Array
jest definiowana jako język pierwotny zamiast rozszerzenia znaczników. Aby uzyskać więcej informacji, zobacz wbudowane typy dla typowych typów pierwotnych języka XAML.
Uwagi dotyczące użycia platformy WPF
Zazwyczaj elementy obiektu, które wypełniają x:Array
, nie są elementami istniejącymi w przestrzeni nazw WPF XAML i wymagają mapowania prefiksu na nie domyślną przestrzeń nazw XAML.
Na przykład poniżej znajduje się prosta tablica dwóch ciągów z prefiksem sys
(a także x
) zdefiniowanym na poziomie tablicy.
<x:Array Type="sys:String"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String>Hello</sys:String>
<sys:String>World</sys:String>
</x:Array>
W przypadku typów niestandardowych, które są używane jako elementy tablicy, klasa musi również obsługiwać wymagania dotyczące tworzenia wystąpienia w języku XAML jako elementów obiektów. Aby uzyskać więcej informacji, zobacz XAML i Custom Classes for WPF.
Zobacz też
- rozszerzenia znaczników i WPF XAML
- typy migrowane z WPF do System.Xaml
.NET Desktop feedback