Compartilhar via


x: argumentos diretiva

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

Uso de elemento XAML (construtor não-padrão)

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

Uso de elemento XAML (método de fábrica)

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

XAML Values

oneOrMoreObjectElements

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

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

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

methodName

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

Dependencies

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

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

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

Comentários

XAML 2006 pode oferecer suporte a inicialização de não-padrão por meio do 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 única seqüência de caracteres; Portanto, ele apenas adiciona capacidade de inicialização de uma único parâmetro, a menos que um conversor de tipo está definido para o comportamento de construção pode analisar os itens de informações personalizadas e delimitadores personalizados da seqüência de caracteres. Além disso, a seqüência de texto para a lógica de objeto é potencialmente conversor de tipo do analisador XAML determinado padrão nativo para manipular os primitivos diferente de uma seqüência de true.

O x:Arguments o uso do XAML é a propriedade utilização de elemento no sentido comum, porque a marcação de diretriz não faz referência tipo. ao elemento object contendo É mais semelhante a outras diretivas como x:Code onde o elemento delimita um intervalo no qual a marcação deve ser interpretada como diferente da padrão para o conteúdo do filho. Nesse caso, o tipo XAML de cada elemento de objeto 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 tentativa de uso para referência.

x:Argumentspara um elemento do objeto sendo construído deve preceder quaisquer outros elementos de propriedade, conteúdo, texto interno ou seqüências de inicialização do elemento de objeto. Os elementos do objeto dentro de x:Arguments pode incluir atributos e seqüências de inicialização, conforme permitido por esse tipo XAML e seu construtor de apoio ou método de fábrica. Para o objeto ou os argumentos, você pode especificar os tipos personalizados de XAML ou XAML que estão fora do namespace XAML padrão caso contrário referenciando mapeamentos de prefixo estabelecidos.

Processadores XAML usam as seguintes diretrizes para determinar como os argumentos especificados na x:Arguments deve ser usado para construir um objeto. Se x:FactoryMethod for especificado, em comparação com as informações para o 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, as informações é comparado 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 dependendo dos tipos XAML, os elementos de objetos fornecidos. Se houver ainda mais de uma correspondência, o comportamento do 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.

O uso do atributo XAML <x:Arguments>string</x:Arguments> é tecnicamente possível. Entretanto, isso não fornece recursos além do que poderia ser feito caso contrário, por meio de 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 do XAML 2009.

Examples

O exemplo a seguir mostra um construtor não-padrão, assinatura, em seguida, o uso do XAML de x:Arguments que acessa 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 uma assinatura de método de fábrica de destino, em seguida, o uso do XAML de x:Arguments que acessa 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>

Consulte também

Conceitos

Visão geral do XAML (WPF)

Outros recursos

A definição de tipos personalizados para uso com o.Serviços XAML do NET Framework