Code-behind et XAML
Mise à jour : novembre 2007
Code-behind est un terme utilisé pour décrire le code joint au code créé par un processeur XAML au moment de la compilation d'une page XAML dans une application. Cette rubrique explique les exigences liées au code-behind et décrit un mécanisme alternatif de code incorporé pour le code en XAML.
Cette rubrique comprend les sections suivantes.
- Composants requis
- Exigences concernant le code-behind, le gestionnaire d'événements et les classe partielles
- x:Code
- Limitations liées au code incorporé
- Rubriques connexes
Composants requis
Cette rubrique part du principe que vous avez lu Vue d'ensemble du langage XAML et possédez des connaissances de base de CLR et de la programmation orientée objet.
Exigences concernant le code-behind, le gestionnaire d'événements et les classe partielles
La classe partielle doit dériver du type de la classe utilisée comme élément racine. Il est possible de ne pas attribuer de valeur à la dérivation dans la définition de la classe partielle du code-behind. Le résultat compilé supposera toutefois que la classe de base de la classe partielle est la racine de la page même si celle-ci n'est pas spécifiée (car la racine de la page est spécifiée en tant que base par la partie de la balise concernant la classe partielle).
Les gestionnaires d'événements que vous créez doivent être des méthodes d'instance définies par la classe partielle dans l'espace de noms CLR identifié par x:Class. Vous ne pouvez pas qualifier le nom d'un gestionnaire d'événements pour demander à un processeur XAML de rechercher ce gestionnaire dans une portée de classe différente. En outre, vous ne pouvez pas utiliser de méthodes statiques comme gestionnaire d'événements.
Le gestionnaire doit correspondre au délégué pour l'événement approprié.
De manière spécifique, pour le langage Microsoft Visual Basic .NET, vous pouvez utiliser le mot clé Handles spécifique au langage pour associer des gestionnaires à des instances et des événements dans la déclaration de gestionnaire, au lieu de joindre des gestionnaires avec des attributs en XAML. Cette technique présente toutefois certaines limitations car Handles ne prend en charge toutes les fonctionnalités spécifiques du système d'événement WPF, tel que certains scénarios d'événements routés ou événements attachés. Pour plus d'informations, consultez Gestion des événements Visual Basic et WPF.
x:Code
x:Code est un élément de directive défini en XAML. Un élément de directive x:Code peut contenir un code de programmation incorporé. Le code défini en ligne peut interagir avec le XAML sur la même page. L'exemple suivant illustre le code C# incorporé. Notez que le code est à l'intérieur de l'élément x:Code et qu'il doit être entouré par <CDATA[...]]> pour se soustraire au contenu de XML, de manière à ce qu'un processeur XAML (interprétant le schéma XAML ou WPF ) n'essaie pas d'interpréter le contenu littéralement en tant que code 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>
Limitations liées au code incorporé
Il est conseillé d'éviter ou de limiter l'utilisation de code incorporé pour une application XAML. En termes d'architecture et de philosophie du codage, la séparation entre balise et code-behind permet d'attribuer des rôles bien distincts au concepteur et au développeur. D'un point de vue plus technique, l'écriture du code incorporé peut s'avérer très difficile, car vous écrivez en permanence dans la classe partielle générée par la page XAML et vous ne pouvez utiliser que les mappages d'espaces de noms XML par défaut. Comme vous ne pouvez pas ajouter d'instructions using, vous devez qualifier entièrement la plupart des appels API que vous faites. Les mappages WPF par défaut incluent la plupart des espaces de noms CLR présents dans les assemblys WPF, mais pas tous ; vous devez donc qualifier entièrement les appels aux API figurant dans les autres espaces de noms CLR. En outre, vous ne pouvez pas définir plusieurs classes dans le code incorporé et toutes les entités de code doivent exister en tant que membre ou variable dans la classe partielle générée. Enfin, d'autres fonctionnalités de programmation spécifiques au langage, telles que les macros ou #ifdef pour les variables globales ou les variables de génération, ne sont pas disponibles. Pour plus d'informations, consultez x:Code, élément de directive XAML.
Voir aussi
Concepts
Vue d'ensemble du langage XAML
Génération d'une application WPF (WPF)
Terminologie de la syntaxe XAML