Code-Behind e XAML

Code-behind é um termo utilizado para descrever o código que é unido ao código criado por um processador XAML quando uma página XAML é compilada em uma aplicação. Este tópico descreve requisitos para code-behind bem como um mecanismo de código em linha alternativo em XAML.

Este tópico contém as seguintes seções.

  • Pré-requisitos
  • Requisitos de Code-behind, Manipulador de Eventos e Classes Parciais
  • x:Code
  • Limitações de Código Em Linha
  • Tópicos relacionados

Pré-requisitos

Este tópico assume que você leu XAML Overview e tem algum conhecimento básico de CLR e programação orientada a objetos.

Requisitos de Code-behind, Manipulador de Eventos e Classes Parciais

  • A classe parcial deve derivar de um tipo da classe que foi utilizada como o elemento raiz. Você pode deixar a derivação em branco na definição da classe parcial em code-behind, mas o resultado compilado assumirá a raiz da página como classe base para a classe parcial mesmo que não seja especificada (porque a metade de marcação da classe parcial especificou a raiz da página como base).

  • Os manipuladores de eventos você gravar devem ser métodos de instância 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 processador XAML para procurar aquele manipulador em um escopo de classe diferente. Você também não pode utilizar métodos estáticos como um manipulador de eventos.

  • O manipulador deve corresponder ao delegado do evento apropriado.

  • Para a linguagem Microsoft Visual Basic .NET especificamente, voce pode utilizar a palavra-chave específica de linguagem Handles para associar manipuladores com instância e eventos na declaração do manipulador, em vez de anexar manipuladores a atributos no XAML. Entretanto, essa técnica tem algumas limitaçoes porque Handles não pode suportar todas as características específicas do sistema de eventos WPF, tais como certos cenários de evento roteado ou eventos anexados. Para obter detalhes, consulte:Visual Basic and WPF Event Handling.

x:Code

x:Code um elemento de diretiva é definido em XAML. Um x:Code elemento de diretiva pode conter código de programação in-line. O código que é definido em linha pode interagir com o XAML na mesma página. O código a seguir ilustra o código C# em linha. Observe que o código está dentro de x:Code elemento e que o código deve estar entre <CDATA[... ]]> usar o Sumário para XML, para que um XAML processador (Interpretando tanto o XAML esquema ou o WPF esquema) não tentar interpretar o Sumário literalmente sistema autônomo 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>

Limitações de Código Em Linha

Você deve evitar ou limitar o uso de código em linha para uma aplicação baseada em XAML. Em termos de arquitetura e filosofia de código, manter uma separação entre a marcação e o code-behind mantém os papéis de designer e de desenvolvedor mais distintos. Em um nível mais técnico, o código que você escreve para código embutido pode ser inconveniente escrever, porque sempre estiver escrevendo para o XAML da página gerada classe parcial e só pode usar os mapeamentos de namespace de XML padrão. Porque você não pode acrescentar comandos using, você deve qualificar completamente muitas das chamadas de API que fizer. O padrão de WPF mapeamentos incluem mais mas não todos CLR namespaces que estão presentes no WPF módulos (assemblies); você terá que qualificar totalmente chamadas para APIs contido dentro de outros namespaces do CLR. Você também não pode definir múltiplas classes de código em linha, e todas as entidades de código devem existir como um membro ou variável dentro da classe parcial gerada. Outras características de programação específicas de linguagem, tais como macros ou #ifdef com variáveis globais ou de compilação também não estão disponíveis. Para obter mais informações, consulte Elemento de diretiva x:Code XAML.

Consulte também

Conceitos

XAML Overview

Building a WPF Application (WPF)

Terminologia de sintaxe XAML

Referência

Elemento de diretiva x:Code XAML