Estensione del markup x:Array
Fornisce supporto generale per matrici di oggetti in XAML tramite un'estensione di markup. Corrisponde al x:ArrayExtension
tipo XAML in [MS-XAML].
Utilizzo della sintassi XAML per gli elementi oggetto
<x:Array Type="typeName">
arrayContents
</x:Array>
Valori XAML
Valore | Descrizione |
---|---|
typeName |
Nome del tipo che x:Array l'utente conterrà. typeName può essere (e spesso è) preceduto da un prefisso per uno spazio dei nomi XAML che contiene le definizioni dei tipi XAML. |
arrayContents |
Contenuto degli elementi assegnato alla proprietà intrinseca ArrayExtension.Items . In genere, questi elementi vengono specificati come uno o più elementi oggetto contenuti nei x:Array tag di apertura e chiusura. È previsto che gli oggetti specificati qui siano assegnabili al tipo XAML specificato in typeName . |
Osservazioni
Type
è un attributo obbligatorio per tutti gli x:Array
elementi oggetto. Un Type
valore di parametro non deve usare un'estensione x:Type
di markup. Il nome breve del tipo è un tipo XAML, che può essere specificato come stringa.
Nell'implementazione dei servizi XAML .NET la relazione tra il tipo XAML di input e l'output CLR Type della matrice creata è influenzata dal contesto del servizio per le estensioni di markup. L'output Type è il UnderlyingType del tipo XAML di input, dopo aver cercato il necessario XamlType in base al contesto dello schema XAML e al servizio fornito dal IXamlTypeResolver contesto.
Durante l'elaborazione, il contenuto della ArrayExtension.Items
matrice viene assegnato alla proprietà intrinseca. Nell'implementazione ArrayExtension questo oggetto è rappresentato da ArrayExtension.Items.
Nell'implementazione dei servizi XAML .NET la gestione per questa estensione di markup è definita dalla ArrayExtension classe . ArrayExtension non è sealed e può essere usato come base per un'implementazione dell'estensione di markup per un tipo di matrice personalizzato.
x:Array
è più destinato all'estendibilità generale del linguaggio in XAML. Ma x:Array
può anche essere utile per specificare i valori XAML di determinate proprietà che accettano raccolte supportate da XAML come contenuto delle proprietà strutturate. Ad esempio, è possibile specificare il contenuto di una IEnumerable proprietà con un x:Array
utilizzo.
x:Array
è un'estensione di markup. Le estensioni di markup in genere vengono implementate quando per i valori dell'attributo devono essere utilizzati caratteri escape in modo che non vengano considerati come valori letterali o nomi di gestori e il requisito è più globale del semplice utilizzo di convertitori dei tipi su alcuni tipi o proprietà. x:Array
è parzialmente un'eccezione a tale regola perché, invece di fornire una gestione alternativa del valore dell'attributo, x:Array
fornisce una gestione alternativa del relativo contenuto di testo interno. Questo comportamento consente di raggruppare i tipi che potrebbero non essere supportati da un con modalità tenda l esistente in una matrice e a cui si fa riferimento più avanti nel code-behind accedendo alla matrice denominata. È possibile chiamare Array i metodi per ottenere singoli elementi della matrice.
Tutte le estensioni di markup in XAML usano le parentesi graffe ({,})
nella sintassi dell'attributo, ovvero la convenzione in base alla quale un processore XAML riconosce che un'estensione di markup deve elaborare il valore dell'attributo. Per altre informazioni sulle estensioni di markup in generale, vedi Convertitori di tipi ed estensioni di markup per XAML.
In XAML 2009 x:Array
viene definito come primitiva del linguaggio anziché come estensione di markup. Per altre informazioni, vedere Tipi predefiniti per primitive del linguaggio XAML comuni.
Note sull'utilizzo di WPF
In genere, gli elementi oggetto che popolano un oggetto x:Array
non sono elementi presenti nello spazio dei nomi XAML WPF e richiedono un mapping di prefisso a uno spazio dei nomi XAML non predefinito.
Ad esempio, di seguito è riportata una semplice matrice di due stringhe, con il sys
prefisso (e anche x
) definito al livello della matrice.
<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>
Per i tipi personalizzati usati come elementi di matrice, la classe deve supportare anche i requisiti per la creazione di istanze in XAML come elementi oggetto. Per altre informazioni, vedere Classi XAML e personalizzate per WPF.
Vedi anche
.NET Desktop feedback