Compartir a través de


Extensión de marcado x:Array

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

Uso de elementos de objeto XAML

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

Valores XAML

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

Observaciones

Type es un atributo necesario 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 la salida clR Type de la matriz creada está influenciada por el contexto de servicio para las extensiones de marcado. El Type de salida es el UnderlyingType del tipo XAML de entrada, después de buscar los XamlType necesarios en función del contexto del esquema XAML y del servicio IXamlTypeResolver que proporciona el contexto.

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

En la implementación de servicios XAML de .NET, el control de esta extensión de marcado se define mediante la clase ArrayExtension. 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 pensado para la extensibilidad general del lenguaje en XAML. Pero x:Array también puede ser útil para especificar valores XAML de determinadas propiedades que toman colecciones compatibles con XAML como contenido de propiedades estructurados. Por ejemplo, puede especificar el contenido de una propiedad IEnumerable con un uso de x:Array.

x:Array es una extensión de marcado. Las extensiones de marcado normalmente se implementan cuando hay un requisito de escape de valores de atributo que no sean valores literales o nombres de controlador, y el requisito es más global que simplemente colocar convertidores de tipos en determinados tipos o propiedades. x:Array es parcialmente una excepción a esa regla porque, en lugar de proporcionar un control de valores de atributo alternativo, x:Array proporciona 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 agrupe en una matriz y se haga referencia más adelante en el código subyacente mediante el acceso a la matriz con nombre; Puede llamar a Array métodos para obtener elementos de matriz individuales.

Todas las extensiones de marcado en XAML usan las llaves ({,}) en su sintaxis de atributo, que es la convención por la que un procesador XAML reconoce que una extensión de marcado debe procesar el valor del atributo. Para obtener más información sobre las extensiones de marcado en general, consulta convertidores de tipos y extensiones de marcado para XAML.

En XAML 2009, x:Array se define como primitivo de lenguaje en lugar de una extensión de marcado. Para obtener más información, consulta 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, consulta XAML y Clases personalizadas para WPF.

Consulte también