Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Code-behind désigne le code associé à des objets définis par le balisage, lorsqu’une page XAML de type balisage est compilée. Cette rubrique décrit les conditions requises pour code-behind ainsi qu’un autre mécanisme de code inline pour le code en XAML.
Cette rubrique contient les sections suivantes :
Conditions préalables
Cette rubrique part du principe que vous avez lu le code XAML dans WPF et que vous avez des connaissances de base sur la programmation CLR et orientée objet.
Code-Behind et le langage XAML
Le langage XAML inclut des fonctionnalités au niveau du langage qui permettent d’associer des fichiers de code aux fichiers de balisage, du côté du fichier de balisage. Plus précisément, le langage XAML définit les caractéristiques de langage x :Class Directive, x :Subclass Directive et x :ClassModifier Directive. Exactement la façon dont le code doit être généré et comment intégrer le balisage et le code, ne fait pas partie de ce que le langage XAML spécifie. Il est laissé aux frameworks tels que WPF pour déterminer comment intégrer le code, comment utiliser XAML dans les modèles d’application et de programmation, ainsi que les actions de génération ou d’autres prises en charge nécessaires.
Configuration requise pour code-behind, gestionnaire d’événements et classes partielles dans WPF
La classe partielle doit dériver du type qui sous-tend l'élément racine.
Notez que, selon le comportement par défaut des actions de compilation du balisage, vous pouvez laisser la dérivation vide dans la définition de la classe partielle dans le fichier de code associé. Le résultat compilé supposera que le type sous-jacent de la racine de la page est la base de la classe partielle, même si le type n'est pas spécifié. Toutefois, s’appuyer sur ce comportement n’est pas une bonne pratique.
Les gestionnaires d’événements que vous écrivez dans le code-behind doivent être des méthodes d’instance et ne peuvent pas être des méthodes statiques. Ces méthodes doivent être 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 indiquer à un processeur XAML de rechercher un gestionnaire d’événements pour le câblage d’événements dans une autre étendue de classe.Le gestionnaire doit correspondre au délégué pour l'événement approprié dans le système de types sous-jacent.
Pour le langage Microsoft Visual Basic spécifiquement, vous pouvez utiliser le mot clé spécifique
Handlesau langage pour associer des gestionnaires à des instances et des événements dans la déclaration de gestionnaire, au lieu d’attacher des gestionnaires à des attributs en XAML. Toutefois, cette technique présente certaines limitations, car leHandlesmot clé ne peut pas prendre en charge toutes les fonctionnalités spécifiques du système d’événements WPF, telles 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 x:Code élément de directive peut contenir du code de programmation inline. Le code défini inline peut interagir avec le code XAML sur la même page. L’exemple suivant illustre le code C# inline. Notez que le code se trouve à l’intérieur de l’élément x:Code et que le code doit être entouré par <CDATA[...]]> pour échapper au contenu xml, afin qu’un processeur XAML (interprétant le schéma XAML ou le schéma WPF) n’essaie pas d’interpréter le contenu littéralement en tant que CODE XML.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://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 du Code en Ligne
Vous devez envisager d’éviter ou de limiter l’utilisation du code inline. En termes d’architecture et de philosophie de codage, le maintien d’une séparation entre le balisage et le code sous-jacent permet de rendre les rôles de concepteur et de développeur beaucoup plus distincts. Au niveau technique, le code que vous écrivez pour le code inline peut être maladroit à écrire, car vous écrivez toujours dans la classe partielle générée par XAML et ne peut utiliser que les mappages d’espaces de noms XML par défaut. Étant donné que vous ne pouvez pas ajouter using d’instructions, vous devez qualifier pleinement un grand nombre d’appels d’API que vous effectuez. Les mappages WPF par défaut incluent la plupart des espaces de noms CLR présents dans les assemblies WPF ; vous devrez qualifier entièrement les appels aux types et aux membres contenus dans les autres espaces de noms CLR. Vous ne pouvez pas également définir quoi que ce soit au-delà de la classe partielle dans le code inline, et toutes les entités de code utilisateur que vous référencez doivent exister en tant que membre ou variable dans la classe partielle générée. D’autres fonctionnalités de programmation spécifiques au langage, telles que les macros ou #ifdef les variables globales ou de build, ne sont pas disponibles. Pour plus d’informations, consultez le type XAML intrinsèque x :Code.
Voir aussi
- XAML dans WPF
- x:Code Type intrinsèque XAML
- Création d'une application WPF
- Détails de la syntaxe XAML
.NET Desktop feedback