Compartir a través de


x:Array (Extensión de marcado)

Proporciona compatibilidad general con matrices de objetos en XAML a través de una extensión de marcado. Esto corresponde al tipo XAML x:ArrayExtension de [MS-XAML].

Uso de elementos de objeto XAML

<x:Array Type="typeName">
  arrayContents
</x:Array>

Valores XAML

Value Descripción
typeName Nombre del tipo que contendrá x:Array. typeName puede tener (y a menudo lo tiene) el prefijo para un espacio de nombres XAML que contiene las definiciones de tipo XAML.
arrayContents El contenido de los elementos que se asigna a la propiedad intrínseca ArrayExtension.Items. Normalmente estos elementos se especifican como uno o varios elementos de objeto contenidos dentro de las x:Array etiquetas de apertura y cierre. Se espera que los objetos especificados aquí se puedan asignar al tipo XAML especificado en typeName.

Comentarios

Type es un atributo obligatorio para todos los elementos de objeto x:Array. Un valor de parámetro Type no necesita usar una extensión de marcado x:Type; el nombre corto del tipo es un tipo XAML que se puede especificar como una cadena.

En la implementación de servicios XAML de .NET, la relación entre el tipo XAML de entrada y el CLR de salida Type de la matriz creada se ve influenciado por el contexto de servicio para las extensiones de marcado. La salida Type es el UnderlyingType del tipo XAML de entrada, después de buscar los necesarios XamlType en función del contexto de esquema XAML y del servicio que proporciona el contexto IXamlTypeResolver.

Cuando se procesa, el contenido de la matriz se asigna a la propiedad intrínseca ArrayExtension.Items. En la implementación ArrayExtension esto se representa mediante ArrayExtension.Items.

La clase ArrayExtension define el control para esta extensión de marcado en la implementación de los servicios XAML de .NET. ArrayExtension no está sellado y podría usarse como base para una implementación de extensión de marcado para un tipo de matriz personalizado.

x:Array está más diseñado para la extensibilidad de lenguaje general en XAML. Pero x:Array también puede ser útil para especificar valores XAML de determinadas propiedades que toman colecciones compatibles con XAML como su contenido de propiedad estructurado. Por ejemplo, puede especificar el contenido de una propiedad IEnumerable con un uso x:Array.

x:Array es una extensión de marcado. Las extensiones de marcado se suelen implementar cuando se necesita que los valores de los atributos de escape no sean valores literales o nombres de controladores, y este requisito es de índole más global que limitarse a colocar los convertidores de tipos en determinados tipos o propiedades. x:Array es, en parte, una excepción a esa regla porque, en lugar de proporcionar un control de valores de atributo alternativo, x:Array proporciona un control alternativo de su contenido de texto interno. Este comportamiento permite que los tipos que no sean compatibles con un modelo de contenido existente se agrupen en una matriz y se haga referencia a ellos más adelante en el código subyacente mediante el acceso a la matriz con nombre; se puede llamar a métodos Array para obtener elementos de matriz individuales.

Todas las extensiones de marcado de XAML utilizan los caracteres ({,}) en su sintaxis de atributo, que es la convención que permite que un procesador de XAML reconozca que el valor de atributo se debe procesar mediante una extensión de marcado. Para obtener más información sobre las extensiones de marcado en general, consulte Convertidores de tipos y extensiones de marcado para XAML.

En XAML 2009 x:Array se define como un primitivo de lenguaje en lugar de una extensión de marcado. Para obtener más información, consulte Tipos integrados para primitivos de lenguaje XAML comunes.

Notas de uso de WPF

Normalmente, los elementos de objeto que rellenan un x:Array no son elementos que existen en el espacio de nombres XAML de WPF y requieren una asignación de prefijo a un espacio de nombres XAML no predeterminado.

Por ejemplo, lo siguiente es una matriz simple de dos cadenas, con el prefijo sys (y también x) definido en el nivel de la matriz.

<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>

Para los tipos personalizados que se usan como elementos de matriz, la clase también debe admitir los requisitos para crear instancias en XAML como elementos de objeto. Para obtener más información, consulte XAML y clases personalizadas para WPF.

Vea también