x:Subclass, directive
Modifie le comportement de compilation de balisage XAML lorsqu’il x:Class
est également fourni. Au lieu de créer une classe partielle basée sur x:Class
, la classe fournie x:Class
est créée en tant que classe intermédiaire, puis votre classe dérivée fournie est censée être basée sur x:Class
.
Utilisation d'attributs XAML
<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
...
</object>
Valeurs XAML
Valeur | Description |
---|---|
namespace |
facultatif. Spécifie un espace de noms CLR qui contient classname . Si namespace elle est spécifiée, un point (.) sépare namespace et classname . |
classname |
Obligatoire. Spécifie le nom CLR de la classe partielle qui connecte le code XAML chargé et votre code-behind pour ce code XAML. Consultez la section Notes. |
subclassNamespace |
facultatif. Peut être différent de si chaque espace de namespace noms peut résoudre l’autre. Spécifie un espace de noms CLR qui contient subclassName . Si subclassName elle est spécifiée, un point (.) sépare subclassNamespace et subclassName . |
subclassName |
Obligatoire. Spécifie le nom CLR de la sous-classe. |
Dépendances
X :Class Directive doit également être fournie sur le même objet, et cet objet doit être l’élément racine de la production XAML.
Notes
x:Subclass
l’utilisation est principalement destinée aux langues qui ne prennent pas en charge les déclarations de classe partielles.
La classe utilisée comme classe x:Subclass
imbriquée ne peut pas être une classe imbriquée et x:Subclass
doit faire référence à l’objet racine, comme expliqué dans la section « Dépendances ».
Sinon, la signification conceptuelle de x:Subclass
n’est pas définie par une implémentation des services XAML .NET. Cela est dû au fait que le comportement des services XAML .NET ne spécifie pas le modèle de programmation global par lequel le balisage XAML et le code de stockage sont connectés. Les implémentations d’autres concepts liés à x:Class
et x:Subclass
sont effectuées par des frameworks spécifiques qui utilisent des modèles de programmation ou des modèles d’application pour définir comment connecter le balisage XAML, le balisage compilé et le code-behind basé sur CLR. Chaque infrastructure peut avoir ses propres actions de génération qui permettent un certain comportement ou des composants spécifiques qui doivent être inclus dans l’environnement de génération. Dans une infrastructure, les actions de génération peuvent également varier en fonction du langage CLR spécifique utilisé pour le code-behind.
Notes d’utilisation WPF
x:Subclass
peut être sur une racine de page ou sur la Application racine dans la définition de l’application, qui a x:Class
déjà . La déclaration x:Subclass
sur n’importe quel élément autre qu’une page ou une racine d’application, ou en le spécifiant lorsqu’il n’existe pas x:Class
, provoque une erreur au moment de la compilation.
La création de classes dérivées qui fonctionnent correctement pour le x:Subclass
scénario est assez complexe. Vous devrez peut-être examiner les fichiers intermédiaires (fichiers .g produits dans le dossier obj de votre projet par compilation de balisage, avec des noms qui incorporent les noms de fichiers .xaml). Ces fichiers intermédiaires peuvent vous aider à déterminer l’origine de certaines constructions de programmation dans les classes partielles jointes dans l’application compilée.
Les gestionnaires d’événements de la classe dérivée doivent être internal override
(Friend Overrides
dans Microsoft Visual Basic) pour remplacer les stubs des gestionnaires créés dans la classe intermédiaire pendant la compilation. Sinon, les implémentations de classe dérivées masquent (ombre) l’implémentation de classe intermédiaire et les gestionnaires de classes intermédiaires ne sont pas appelés.
Lorsque vous définissez les deux x:Class
et x:Subclass
que vous n’avez pas besoin de fournir d’implémentation pour la classe référencée par x:Class
. Il vous suffit de lui attribuer un nom via l’attribut x:Class
afin que le compilateur ait des conseils pour la classe qu’il crée dans les fichiers intermédiaires (le compilateur ne sélectionne pas de nom par défaut dans ce cas). Vous pouvez donner à la x:Class
classe une implémentation ; toutefois, ce n’est pas le scénario classique pour l’utilisation à la fois x:Class
et x:Subclass
.
Voir aussi
.NET Desktop feedback