Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Diretiva x:Arguments

.NET Framework (current version)
 

Argumentos de construção de pacotes para uma declaração de elemento de objeto do construtor não padrão em XAML, ou para uma declaração de objeto do método de fábrica.

<object ...>
  <x:Arguments>
    oneOrMoreObjectElements
  </x:Arguments>
</object>

<object x:FactoryMethod="methodName"...>
  <x:Arguments>
    oneOrMoreObjectElements
  </x:Arguments>
</object>

oneOrMoreObjectElements

Um ou mais elementos de objeto que especificar argumentos a serem passados para o método de backup não padrão construtor ou de fábrica.

Uso típico é usar o texto de inicialização dentro de elementos de objeto para especificar os valores de argumento real. Consulte a seção exemplos.

A ordem dos elementos é significativa. Os tipos XAML na ordem devem corresponder aos tipos e digite ordem da sobrecarga de método de construtor ou fábrica de backup.

methodName

O nome do método de fábrica que deve processar qualquer x:Arguments argumentos.

x:FactoryMethod pode modificar o escopo e o comportamento onde x:Arguments se aplica.

Se nenhum x:FactoryMethod for especificado, x:Arguments se aplica às assinaturas (não padrão) alternativas dos construtores de backup.

Se x:FactoryMethod for especificado, x:Arguments aplica-se a uma sobrecarga do método nomeado.

2006 XAML pode oferecer suporte a inicialização não padrão pelo texto de inicialização. No entanto, a aplicação prática de uma técnica de construção de texto de inicialização é limitada. Texto de inicialização é tratado como uma cadeia de caracteres de texto simples; Portanto, apenas ele adiciona capacidade de inicialização de um único parâmetro, a menos que um conversor de tipo está definido para o comportamento de construção que pode analisar itens de informações personalizadas e delimitadores personalizados da cadeia de caracteres. Além disso, a cadeia de caracteres de texto à lógica do objeto é potencialmente conversor de tipo nativo padrão de um analisador XAML determinado para lidar com primitivos que não seja uma cadeia de caracteres.

A x:Arguments uso do XAML não é uso do elemento de propriedade no sentido comum, porque a diretiva marcação não faz referência a tipo de elemento de objeto que contém. Ele é mais semelhante a outras diretivas como x:Code onde o elemento delimita um intervalo no qual a marcação deve ser interpretada como diferente do padrão para conteúdo filho. Nesse caso, o tipo de XAML de cada elemento de objeto se comunica informações sobre os tipos de argumento, que são usadas pelo analisadores XAML para determinar qual método de fábrica construtor específico assinatura um x:Arguments uso está tentando fazer referência.

x:Arguments para um elemento de objeto sendo construído deve preceder quaisquer outros elementos de propriedade, conteúdo, texto interno ou cadeias de caracteres de inicialização do elemento de objeto. Os elementos de objeto dentro de x:Arguments pode incluir atributos e cadeias de caracteres de inicialização, conforme permitido por esse tipo XAML e seu método de construtor ou fábrica de backup. Para o objeto ou os argumentos, você pode especificar os tipos XAML personalizados ou tipos de XAML que estariam fora do namespace XAML padrão referenciando mapeamentos de prefixo estabelecida.

Processadores XAML usam as diretrizes a seguir para determinar como os argumentos especificados em x:Arguments deve ser usado para construir um objeto. Se x:FactoryMethod for especificado, informações são comparadas especificado x:FactoryMethod (Observe que o valor de x:FactoryMethod é o nome do método e o método nomeado pode ter sobrecargas. Se x:FactoryMethod não for especificado, informações são comparadas com o conjunto de todas as sobrecargas de construtor público do objeto. Lógica de processamento de XAML, em seguida, compara o número de parâmetros e seleciona a sobrecarga com aridade correspondente. Se houver mais de uma correspondência, o processador XAML deve comparar os tipos dos parâmetros de acordo com os tipos XAML dos elementos de objeto fornecido. Se houver ainda mais de uma correspondência, o comportamento de processador XAML é indefinido. Se um x:FactoryMethod for especificado, mas o método não pode ser resolvido, um processador XAML deve lançar uma exceção.

Um uso do atributo XAML <x:Arguments>string</x:Arguments> é tecnicamente possível. No entanto, isso não fornece recursos além do que poderia ser feito caso contrário pelo conversores de texto e o tipo de inicialização e usar essa sintaxe não é a intenção de design dos recursos de método de fábrica XAML 2009.

O exemplo a seguir mostra um construtor padrão sem assinatura, em seguida, o uso do XAML do x:Arguments que acessa essa assinatura.

public class Food {
    private string _name;
    private Int32 _calories;
    public Food(string name, Int32 calories) {
        _name=name;
        _calories=calories;
    }
}
<my:Food>
    <x:Arguments>
        <x:String>Apple</x:String>
        <x:Int32>150</x:Int32>
    </x:Arguments>
</my:Food>

O exemplo a seguir mostra a assinatura de um método de fábrica de destino, em seguida, o uso do XAML de x:Arguments que acessa essa assinatura.

public Food TryLookupFood(string name)
{
  switch (name) {
    case "Apple": return new Food("Apple",150);
    case "Chocolate": return new Food("Chocolate",200);
    case "Cheese": return new Food("Cheese", 450);
    default: {return new Food(name,0);
  }
}
<my:Food x:FactoryMethod="TryLookupFood">
    <x:Arguments>
        <x:String>Apple</x:String>
    </x:Arguments>
</my:Food>
Mostrar: