Compartilhar via


Code-Behind e XAML no WPF

Code-behind é um termo usado para descrever o código que está associado com objetos definidos de marcação, quando um XAML página é compilada para marcação. This topic describes requirements for code-behind as well as an alternative inline code mechanism for code in XAML.

This topic contains the following sections:

  • Prerequisites

  • Code-Behind e a linguagem XAML

  • Code-behind, o manipulador de eventos e os requisitos de classe parcial no WPF

  • x:Code

  • Inline Code Limitations

Prerequisites

This topic assumes that you have read the Visão geral do XAML (WPF) and have some basic knowledge of the CLR and object-oriented programming.

Code-Behind e a linguagem XAML

A linguagem XAML inclui recursos de nível de linguagem que tornam possível associar arquivos de código com arquivos de marcação, do lado do arquivo de marcação. Especificamente, a linguagem XAML define os recursos de idioma Diretiva X:Class, x: subclasse diretiva, e Diretiva de x: ClassModifier. Exatamente como o código deve ser produzido e como integrar a marcação e código, não é parte do que a linguagem XAML especifica. Ela é deixada para estruturas como, por exemplo, o WPF para determinar como integrar o código, como usar o XAML no aplicativo e modelos de programação e a compilação ações ou outro suporte que tudo isso requer.

Code-behind, o manipulador de eventos e os requisitos de classe parcial no WPF

  • A classe parcial deve derivar do tipo que faz o elemento raiz.

  • Observe que sob o comportamento padrão das ações de compilação de compilação de marcação, você pode deixar a derivação em branco na definição de classe parcial do lado de code-behind. O resultado compilado assumirá o tipo de backup da raiz de página para ser a base para a classe parcial, mesmo se não especificado. No entanto, contando com esse comportamento não é uma prática recomendada.

  • Os manipuladores de eventos que você escrever no code-behind devem ser métodos de instância e não podem ser métodos estáticos. Esses métodos devem ser definidos pela classe parcial no namespace CLR identificado por x:Class. Você não pode qualificar o nome de um manipulador de eventos para instruir um XAML o processador para procurar por um manipulador de eventos para fiação de evento em um escopo de classe diferente.

  • O manipulador deve coincidir com o representante para o evento apropriado no sistema de tipo de backup.

  • For the Microsoft Visual Basic language specifically, you can use the language-specific Handles keyword to associate handlers with instances and events in the handler declaration, instead of attaching handlers with attributes in XAML. No entanto, essa técnica tem algumas limitações porque o Handles palavra-chave não pode oferecer suporte a todos os recursos específicos da WPF o sistema de eventos, como determinados cenários de evento roteado ou eventos anexados. For details, see Visual Basic and WPF Event Handling.

x:Code

Código de x: é um elemento de diretiva definido em XAML. Um x:Code diretiva elemento pode conter código de programação in-line. The code that is defined inline can interact with the XAML on the same page. The following example illustrates inline C# code. Observe que o código está dentro do x:Code elemento e que o código deve estar entre <CDATA[...]]> para escapar o conteúdo para XML, de modo que um XAML processador (Interpretando tanto o XAML esquema ou o WPF esquema) não tenta interpretar o conteúdo literalmente como XML.

<Page
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="MyNamespace.MyCanvasCodeInline"
>
  <Button Name="button1" Click="Clicked">Click Me!</Button>
  <x:Code><![CDATA[
    void Clicked(object sender, RoutedEventArgs e)
    {
        button1.Content = "Hello World";
    }
  ]]></x:Code>
</Page>

Inline Code Limitations

Você deve considerar a evitar ou limitar o uso do código embutido. In terms of architecture and coding philosophy, maintaining a separation between markup and code-behind keeps the designer and developer roles much more distinct. Em um nível mais técnico, o código que você escreve para o código embutido pode ser inconveniente escrever, porque sempre estiver escrevendo para o XAML gerado de classe parcial e só pode usar mapeamentos de namespace do padrão de XML. Because you cannot add using statements, you must fully qualify many of the API calls that you make. O padrão WPF mapeamentos incluem mais, mas nem todos CLR namespaces que estão presentes na WPF assemblies; Você terá que qualificar totalmente as chamadas para os tipos e membros contidos em outros namespaces do CLR. Você também não é possível definir qualquer coisa além de classe parcial em código embutido e todas as entidades de código de usuário, que você faz referência devem existir como um membro ou uma variável dentro da classe parcial gerada. Outros idiomas programação recursos específicos, como, por exemplo, macros ou #ifdef contra variáveis globais ou variáveis de construção, também não estão disponíveis. For more information, see x: código de tipo intrínseco do XAML.

Consulte também

Referência

x: código de tipo intrínseco do XAML

Conceitos

Visão geral do XAML (WPF)

Building a WPF Application (WPF)

Sintaxe XAML em detalhes