Partilhar via


x:Extensão de marcação de matriz

Fornece suporte geral para matrizes de objetos em XAML por meio de uma extensão de marcação. Isso corresponde ao tipo XAML x:ArrayExtension em [MS-XAML].

Uso do elemento de objeto XAML

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

Valores XAML

Valor Descrição
typeName O nome do tipo que seu x:Array conterá. typeName pode ser (e muitas vezes é) prefixado para um namespace XAML que contém as definições de tipo XAML.
arrayContents O conteúdo dos itens atribuído à propriedade ArrayExtension.Items intrínseca. Normalmente, esses itens são especificados como um ou mais elementos de objeto contidos nas tags de abertura e fechamento x:Array. Espera-se que os objetos especificados aqui sejam atribuíveis ao tipo XAML especificado em typeName.

Comentários

Type é um atributo obrigatório para todos os elementos x:Array objeto. Um valor de parâmetro Type não precisa usar uma extensão de marcação x:Type; o nome curto do tipo é um tipo XAML, que pode ser especificado como uma cadeia de caracteres.

Na implementação dos Serviços XAML .NET, a relação entre o tipo XAML de entrada e a Type CLR de saída da matriz criada é influenciada pelo contexto de serviço para extensões de marcação. O Type de saída é o UnderlyingType do tipo XAML de entrada, depois de procurar os XamlType necessários com base no contexto do esquema XAML e no serviço de IXamlTypeResolver que o contexto fornece.

Quando processado, o conteúdo da matriz é atribuído à propriedade intrínseca ArrayExtension.Items. No ArrayExtension implementação, isso é representado por ArrayExtension.Items.

Na implementação dos Serviços XAML .NET, a manipulação para essa extensão de marcação é definida pela classe ArrayExtension. ArrayExtension não está selado e pode ser usado como base para uma implementação de extensão de marcação para um tipo de matriz personalizada.

x:Array destina-se mais à extensibilidade geral da linguagem em XAML. Mas x:Array também pode ser útil para especificar valores XAML de determinadas propriedades que usam coleções com suporte de XAML como seu conteúdo de propriedade estruturada. Por exemplo, você pode especificar o conteúdo de uma propriedade IEnumerable com um uso x:Array.

x:Array é uma extensão de marcação. As extensões de marcação geralmente são implementadas quando há um requisito para escapar de valores de atributos diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que apenas colocar conversores de tipo em determinados tipos ou propriedades. x:Array é parcialmente uma exceção a essa regra porque, em vez de fornecer tratamento alternativo de valor de atributo, x:Array fornece tratamento alternativo de seu conteúdo de texto interno. Esse comportamento permite que tipos que podem não ser suportados por um modelo de conteúdo existente sejam agrupados em uma matriz e referenciados posteriormente no code-behind acessando a matriz nomeada; Você pode chamar Array métodos para obter itens de matriz individuais.

Todas as extensões de marcação em XAML usam as chaves ({,}) em sua sintaxe de atributo, que é a convenção pela qual um processador XAML reconhece que uma extensão de marcação deve processar o valor do atributo. Para obter mais informações sobre extensões de marcação em geral, consulte Conversores de tipo e extensões de marcação para XAML.

Em XAML 2009, x:Array é definido como uma primitiva de linguagem em vez de uma extensão de marcação. Para obter mais informações, consulte Built-in Types for Common XAML Language Primitives.

Notas de uso do WPF

Normalmente, os elementos de objeto que preenchem um x:Array não são elementos que existem no namespace WPF XAML e exigem um mapeamento de prefixo para um namespace XAML não padrão.

Por exemplo, o seguinte é uma matriz simples de duas cadeias de caracteres, com o prefixo sys (e também x) definido no nível da 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 tipos personalizados que são usados como elementos de matriz, a classe também deve suportar os requisitos para ser instanciada em XAML como elementos de objeto. Para obter mais informações, consulte XAML e classes personalizadas para WPF.

Ver também