Condividi tramite


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