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
- extensiones de marcado y XAML de WPF
- tipos de migrados de WPF a System.Xaml
.NET Desktop feedback