Compartilhar via


x: nome de diretiva

Identifica os elementos definidos em XAML, em um namescope XAML. Namescopes XAML e seus modelos de exclusividade que podem ser aplicados aos objetos instanciados, quando estruturas fornecem APIs ou implementam comportamentos que acessam o gráfico do objeto criado em XAML em tempo de execução.

XAML Attribute Usage

<object x:Name="XAMLNameValue".../>

XAML Values

XAMLNameValue

A string that conforms to the restrictions of the Gramática XamlName.

Comentários

Depois de x:Name é aplicado a uma estrutura do fazendo o modelo de programação, o nome é equivalente à variável que contém uma referência de objeto ou uma instância, conforme retornado por um construtor.

O valor de um x:Name diretiva uso deve ser exclusivo dentro de um namescope XAML. Por padrão, quando usado por.API de serviços do NET Framework XAML, o principal namescope XAML é definido no elemento raiz XAML de um único produção XAML e abrange os elementos que estão contidos na produção XAML. Adicionais namescopes discreto de XAML que podem ocorrer dentro de um único produção XAML pode ser definido por estruturas para abordar cenários específicos. Por exemplo, no WPF, novos namescopes XAML são definidos e criados por qualquer modelo que também é definido na produção XAML. Para obter mais informações sobre namescopes XAML (escritos mas relevantes a muitos conceitos de namescope XAML para WPF), consulte Namescopes do WPF XAML.

Em geral, x:Name não devem ser aplicadas em situações que também usam x:Key. Implementações de XAML por estruturas existentes específicas introduziram conceitos de substituição entre x:Key e x:Name, mas esse não é uma prática recomendada. .NET Framework XAML Services não oferece suporte a esses conceitos de substituição ao lidar com informações de chave/nome como INameScope ou DictionaryKeyPropertyAttribute.

Regras de permittance de x:Name , bem como a imposição de exclusividade do nome potencialmente são definidos pelas estruturas de implementação específica. No entanto, para ser usado com.NET Framework XAML Services, as definições de estrutura de exclusividade de namescope XAML devem ser consistentes com a definição de INameScope as informações contidas nesta documentação e deve usar as mesmas regras sobre onde as informações são aplicadas. Por exemplo, o Windows Presentation Foundation (WPF) implementação divide vários elementos de marcação em separado NameScope intervalos, como dicionários de recurso, a árvore lógica criada pelo nível da página XAML, modelos, e outras adiados conteúdo e, em seguida, aplique a exclusividade do nome XAML dentro de cada uma dessas namescopes XAML.

Para tipos personalizados que usam.Os criadores do objeto XAML de serviços do NET Framework XAML, uma propriedade que mapeia para x:Name em um tipo pode ser estabelecido ou alterado. Você definir esse comportamento referenciando o nome da propriedade para mapear com o RuntimeNamePropertyAttribute no código de definição de tipo. RuntimeNamePropertyAttributeé um atributo de nível do tipo.

Serviços de XAML Using.NET Framework, a lógica de apoio para suporte de namescope XAML pode ser definidos de uma maneira neutra de framework Implementando o INameScope interface.

Notas de uso do WPF

Sob a configuração de compilação padrão para um WPF aplicativo que usa o XAML, classes parciais e code-behind, especificado x:Name se torna o nome de um campo que é criado na Base de código quando XAML é processado por uma tarefa de compilação de compilação da marcação e esse campo contém uma referência ao objeto. Por padrão, o campo criado é interno. You can change field access by specifying the x:FieldModifier attribute. No WPF e Silverlight, a seqüência é o que define a compilação da marcação e nomes de campo em uma classe parcial, mas o valor fica inicialmente vazio. Em seguida, um método gerado chamado InitializeComponent é chamado de dentro do construtor de classe. InitializeComponentconsiste em FindName chama o uso de cada a x:Name valores que existem na parte definida em XAML da classe parcial, como seqüências de caracteres de entrada. Os valores de retorno são então atribuídos a referência de campo de nome semelhante para preencher os valores de campo com objetos que foram criados a partir de XAML para análise. A execução de InitializeComponent possibilitam a referência para o gráfico de objeto de tempo de execução usando o x:Name / nome do campo em vez de precisar chamar diretamente, FindName explicitamente a qualquer momento você precisa de uma referência a um objeto definido em XAML.

Para um aplicativo do WPF que usa o Microsoft Visual Basic destinos e inclui arquivos XAML com Page ação de compilação, uma propriedade de referência separada é criada durante a compilação adiciona o WithEvents palavra-chave para todos os elementos que possuem um x:Name, para oferecer suporte a Handles sintaxe para representantes de manipulador de eventos. This property is always public. For more information, see Visual Basic and WPF Event Handling.

x:Nameé usado pelo processador WPF XAML para registrar um nome em um namescope XAML no tempo de carregamento, mesmo para os casos onde a página não é compilado em marcação, por ações de compilação (por exemplo, XAML livre de um dicionário de recurso). Um dos motivos para esse comportamento ocorre porque o x:Name potencialmente é necessária para ElementName de vinculação. For details, see Revisão de Associação de Dados.

Como mencionado anteriormente, x:Name (ou Name) não devem ser aplicadas em situações que também usam x:Key. O WPF ResourceDictionary tem um comportamento especial de definição de si mesmo como um namescope XAML, mas retornando não implementado ou valores nulos para INameScope APIs como uma maneira de aplicar esse comportamento. Se o analisador do WPF XAML encontrar Name ou x:Name em uma definição XAML ResourceDictionary, o nome não é adicionado a qualquer namescope XAML. Tentando localizar esse nome de qualquer namescope XAML e o FindName métodos não retornará resultados válidos.

x: nome e nome

Muitos cenários de aplicativo WPF podem evitar qualquer uso da x:Name de atributo, porque o Name a propriedade de dependência como especificado no padrão namespace XAML para várias das classes base importantes, como FrameworkElement e FrameworkContentElement satisfaz essa mesma finalidade. Ainda existem alguns cenários comuns do WPF e XAML código onde o acesso a um elemento com não Name a propriedade no nível da estrutura é importante. Por exemplo, determinadas classes de suporte de animação e o storyboard não oferecem suporte a uma Name a propriedade, mas eles geralmente precisam ser mencionado no código para controlar a animação. Você deve especificar x:Name como um atributo em cronogramas e transformações que são criadas em XAML, se você pretende fazer referência a eles no código posteriormente.

Se Name está disponível como uma propriedade na classe, Name e x:Name podem ser usados alternadamente como atributos, mas uma exceção de análise resultará se ambos são especificados no mesmo elemento. Se o XAML é compilada de marcação, a exceção irá ocorrer na compilação de marcação, caso contrário, ele ocorre no carregamento.

Namepode ser definido usando a sintaxe de atributo XAML e no uso de código SetValue; Observe no entanto essa configuração de Name propriedade no código não cria a referência do representante de campo dentro de namescope o XAML na maioria das circunstâncias onde o XAML já está carregado. Em vez de tentar definir Name no código, use NameScope métodos do código, em relação a namescope apropriado.

Nametambém pode ser definido usando a sintaxe de elemento de propriedade com texto interno, mas o que é incomum. Em contraste, x:Name não pode ser definido na sintaxe de elemento de propriedade XAML, ou no código usando SetValue; ela só pode ser definida usando a sintaxe de atributo em objetos porque é uma diretiva.

Notas de uso do Silverlight

x:Namepara o Silverlight é documentado separadamente. Para obter mais informações, consulte Namespace XAML (x:) Recursos de linguagem (Silverlight).

Consulte também

Referência

FrameworkElement.Name

FrameworkContentElement.Name

Conceitos

Árvores em WPF