Services XAML

Cette rubrique décrit les fonctionnalités d’un ensemble de technologies connu sous le nom de services XAML .NET. La plupart des services et API décrits se trouvent dans l’assembly System.Xaml . Les services incluent les lecteurs et les writers, les classes de schéma et la prise en charge des schémas, les fabriques, l’attribution des classes, la prise en charge intrinsèque du langage XAML et d’autres fonctionnalités du langage XAML.

À propos de cette documentation

la documentation conceptuelle pour les Services xaml .net part du principe que vous avez déjà utilisé le langage xaml et comment il peut s’appliquer à un framework spécifique, par exemple Windows Presentation Foundation (WPF) ou Windows Workflow Foundation, ou à un domaine de fonctionnalités technologiques spécifique, par exemple les fonctionnalités de personnalisation de la build dans Microsoft.Build.Framework.XamlTypes . Cette documentation n’a pas pour but d’expliquer les principes fondamentaux de XAML en tant que langage de balisage, terminologie de syntaxe XAML ou autre matériel d’introduction. Au lieu de cela, cette documentation se concentre sur l’utilisation spécifique des services XAML .NET qui sont activés dans la bibliothèque d’assemblys System. Xaml. La plupart de ces API sont destinées aux scénarios d’intégration et d’extensibilité du langage XAML. Il peut s’agir de l’un des scénarios suivants :

  • Extension des fonctionnalités des lecteurs XAML de base ou des writers XAML (traitement direct du flux de nœud XAML ; dérivation de votre propre lecteur XAML ou writer XAML).

  • Définition de types personnalisés XAML qui n’ont pas de dépendances d’infrastructure spécifiques et attribution des types pour transmettre leurs caractéristiques de système de type XAML aux services XAML .NET.

  • Hébergement de lecteurs et de writers XAML en tant que composant d’une application, tel qu’un concepteur visuel ou un éditeur interactif pour les sources de balisage XAML.

  • Écriture de convertisseurs de valeur XAML (extensions de balisage ; convertisseurs de type pour les types personnalisés).

  • Définition d’un contexte de schéma XAML personnalisé (à l’aide de techniques de chargement d’assembly alternatives pour la sauvegarde des sources de type ; à l’aide de techniques de recherche de types connus au lieu de toujours refléter des assemblys ; à l’aide de concepts d’assembly chargés qui n’utilisent pas le common language runtime (CLR) AppDomain et le modèle de sécurité associé).

  • Extension du système de type XAML de base.

  • Utilisation des LookupInvoker techniques ou pour influencer le système de type XAML et la manière dont les sauvegardes de type sont évaluées.

Si vous recherchez des éléments de présentation du langage XAML, vous pouvez essayer la vue d’ensemble du langage XAML (WPF .net). cette rubrique décrit XAML pour un public qui est nouveau à Windows Presentation Foundation (WPF), ainsi qu’à l’utilisation des fonctionnalités de balisage xaml et de langage xaml. Un autre document utile est le matériel d’introduction de la spécification du langage XAML.

Services XAML .NET et System.Xaml architecture .net

Les services XAML .NET et l' System.Xaml assembly définissent une grande partie de ce qui est nécessaire pour prendre en charge les fonctionnalités du langage XAML. Cela comprend les classes de base pour les lecteurs XAML et les writers XAML. La fonctionnalité la plus importante ajoutée aux services XAML .NET qui n’était pas présente dans les implémentations XAML spécifiques à l’infrastructure est une représentation de système de type pour XAML. La représentation de système de type présente du code XAML dans une méthode orientée objet qui se centre sur les fonctionnalités XAML sans avoir de dépendances avec des fonctionnalités spécifiques des frameworks.

Le système de type XAML n’est pas limité par la forme de balisage ou les caractéristiques d’exécution de l’origine XAML ; elle n’est pas non plus limitée par un système de type de stockage spécifique. Le système de type XAML comprend des représentations d’objet pour les types, les membres, les contextes de schéma XAML, les concepts de niveau XML et d’autres concepts de langage XAML ou intrinsèques XAML. L’utilisation ou l’extension du système de type XAML permet de dériver des classes comme les lecteurs XAML et les writers XAML, et d’étendre les fonctionnalités des représentations XAML dans des fonctionnalités spécifiques activées par une infrastructure, une technologie ou une application qui consomme ou émet du code XAML. Le concept de contexte de schéma XAML permet d’effectuer des opérations d’écriture de graphique d’objets pratiques à partir de la combinaison d’une implémentation de writer d’objet XAML, d’un système de type de stockage de technologie comme communiqué via les informations d’assembly dans le contexte et de la source de nœud XAML. Pour plus d’informations sur le concept de schéma XAML. consultez contexte de schéma XAML par défaut et contexte de schéma XAML WPF.

Flux de nœud xaml, lecteurs xaml et writers xaml

Pour comprendre le rôle joué par les services XAML .NET dans la relation entre le langage XAML et les technologies spécifiques qui utilisent XAML comme langage, il est utile de comprendre le concept d’un flux de nœud XAML et la façon dont ce concept forme l’API et la terminologie. Le flux de nœud XAML est un élément de conception intermédiaire conceptuel entre une représentation de langage XAML et le graphique d’objet que le XAML représente ou définit.

  • Un lecteur XAML est une entité qui traite le XAML sous une forme et produit un flux de nœud XAML. Dans l’API, un lecteur XAML est représenté par la classe de base XamlReader .

  • Un writer XAML est une entité qui traite un flux de nœud XAML et produit autre chose. Dans l’API, un writer XAML est représenté par la classe de base XamlWriter .

    Les deux scénarios les plus courants impliquant XAML sont le chargement du XAML pour instancier un graphique d’objet et l’enregistrement d’un graphique d’objet à partir d’une application ou d’un outil et la génération d’une représentation XAML (généralement sous forme de balisage enregistrée sous forme de fichier texte). Le chargement du XAML et la création d’un graphique d’objet sont souvent référencés dans cette documentation comme chemin de chargement. L’enregistrement ou la sérialisation d’un graphique d’objet existant dans XAML est souvent référencé dans cette documentation en tant que chemin d’enregistrement.

    Le type le plus courant de chemin de chargement peut être décrit comme suit :

  • Commencez par une représentation XAML, au format XML encodé en UTF et enregistrée en tant que fichier texte.

  • Chargez ce XAML dans XamlXmlReader . XamlXmlReader est une XamlReader sous-classe.

  • Le résultat est un flux de nœud XAML. Vous pouvez accéder à des nœuds individuels du flux de nœud XAML à l’aide de l' XamlXmlReader / XamlReader API. L’opération la plus courante ici consiste à avancer dans le flux de nœud XAML, en traitant chaque nœud à l’aide d’une métaphore « enregistrement actuel ».

  • Transmettez les nœuds résultants du flux de nœud XAML à une XamlObjectWriter API. XamlObjectWriter est une XamlWriter sous-classe.

  • XamlObjectWriterÉcrit un graphique d’objet, un objet à la fois, en fonction de la progression dans le flux de nœud XAML source. L’écriture d’objets s’effectue avec l’assistance d’un contexte de schéma XAML et d’une implémentation qui peut accéder aux assemblys et aux types d’un système de type de stockage et d’une infrastructure.

  • Appelez Result à la fin du flux de nœud XAML pour obtenir l’objet racine du graphique d’objets.

    Le type le plus courant de chemin d’enregistrement peut être décrit comme suit :

  • Commencez par le graphique d’objet d’une exécution complète de l’application, le contenu de l’interface utilisateur et l’état d’une exécution, ou un segment plus petit de la représentation d’objet d’une application globale au moment de l’exécution.

  • À partir d’un objet de démarrage logique, tel qu’une racine de l’application ou une racine de document, charge les objets dans XamlObjectReader . XamlObjectReader est une XamlReader sous-classe.

  • Le résultat est un flux de nœud XAML. Vous pouvez accéder à des nœuds individuels du flux de nœud XAML à l’aide XamlObjectReader de et de l' XamlReader API. L’opération la plus courante ici consiste à avancer dans le flux de nœud XAML, en traitant chaque nœud à l’aide d’une métaphore « enregistrement actuel ».

  • Transmettez les nœuds résultants du flux de nœud XAML à une XamlXmlWriter API. XamlXmlWriter est une XamlWriter sous-classe.

  • XamlXmlWriterÉcrit du code XAML dans un encodage UTF XML. Vous pouvez l’enregistrer en tant que fichier texte, en tant que flux ou dans d’autres formes.

  • Appelez Flush pour obtenir le résultat final.

Pour plus d’informations sur les concepts de flux de nœud XAML, consultez Présentation des concepts et structures du flux de nœud XAML.

La classe XamlServices

Il n’est pas toujours nécessaire de traiter un flux de nœud XAML. Si vous souhaitez un chemin de chargement de base ou un chemin d’enregistrement de base, vous pouvez utiliser des API dans la XamlServices classe.

  • Différentes signatures de Load implémentent un chemin de chargement. Vous pouvez charger un fichier ou un flux, ou vous pouvez charger un objet XmlReader , TextReader ou XamlReader qui inclut dans un wrapper votre entrée XAML en le chargeant avec les API de ce lecteur.

  • Les différentes signatures de Save enregistrent un graphique d’objet et produisent une sortie sous la forme d’un flux, d’un fichier ou d’une XmlWriter/TextWriter instance.

  • Transform convertit le code XAML en liant un chemin de chargement et un chemin d’enregistrement comme une seule opération. Un contexte de schéma ou un système de type de stockage différent peut être utilisé pour XamlReader et XamlWriter , ce qui influence le mode de transformation du code XAML obtenu.

Pour plus d’informations sur l’utilisation de XamlServices , consultez XamlServices.

Système de type XAML

Le système de type XAML fournit les API requises pour utiliser un nœud individuel donné d’un flux de nœud XAML.

XamlType représentation d’un objet : ce que vous traitez entre un nœud d’objet de début et un nœud d’objet de fin.

XamlMember est la représentation d’un membre d’un objet, ce que vous traitez entre un nœud de membre de début et un nœud de membre de fin.

Les API telles que GetAllMembers et GetMember et DeclaringType signalent les relations entre un XamlType et un XamlMember .

Le comportement par défaut du système de type XAML implémenté par les services XAML .NET est basé sur le common language runtime (CLR) et l’analyse statique des types CLR dans les assemblys à l’aide de la réflexion. Par conséquent, pour un type CLR spécifique, l’implémentation par défaut du système de type XAML peut exposer le schéma XAML de ce type et de ses membres et le signaler en termes de système de type XAML. Dans le système de type XAML par défaut, le concept d’assignation des types est mappé sur l’héritage CLR, et les concepts des instances, des types de valeur, etc., sont également mappés aux comportements et fonctionnalités de prise en charge du CLR.

Informations de référence sur les fonctionnalités du langage XAML

Pour prendre en charge XAML, les services XAML .NET fournissent une implémentation spécifique des concepts du langage XAML tels qu’ils sont définis pour l’espace de noms XAML du langage XAML. Celles-ci sont documentées sous forme de pages de référence spécifiques. Les fonctionnalités de langage sont documentées du point de vue de la façon dont ces fonctionnalités de langage se comportent lorsqu’elles sont traitées par un lecteur XAML ou un writer XAML défini par les services XAML .NET. Pour plus d'informations, consultez XAML Namespace (x:) Language Features.