Partager via


Architecture du contexte d'édition

Cette rubrique explique le rôle du contexte d'édition lorsque vous développez des fournisseurs et des connecteurs de fonctionnalités pour le Concepteur WPF pour Visual Studio. Pour plus d'informations sur les fournisseurs et les connecteurs de fonctionnalités, consultez Fournisseurs de fonctionnalités et connecteurs de fonctionnalités.

Contexte d'édition : capture de l'état actuel du concepteur

Un concepteur visuel accumule un volume important d'informations d'état au fur et à mesure de leur utilisation. L'état peut représenter tout type d'informations au moment du design, comme les objets de la sélection actuelle ou le comportement lorsque l'utilisateur clique sur le bouton de la souris. L'état doit être stocké dans un emplacement central afin de pouvoir être récupéré aisément. La classe EditingContext représente le référentiel d'état central du concepteur.

Services

Un service est une instance unique d'une classe, qui définit un comportement particulier. Un service fournit le comportement et l'implémentation dans le concepteur. Une fois créé dans un contexte, un service est toujours présent jusqu'à ce que le contexte soit supprimé. Les services ne disparaissent jamais du contexte. Il est possible de mettre des services en cache sans risque, car ils comportent des valeurs d'instance cohérentes. Pour obtenir un exemple de code qui indique comment implémenter un service, consultez Comment : créer un connecteur de fonctionnalités personnalisé.

Éléments de contexte

Un élément de contexte est un objet immuable qui contient l'état. Certains éléments de contexte définissent également des méthodes, qui permettent d'exécuter des opérations sur l'état contenu.

Un élément de contexte peut être ajouté à un contexte et supprimé de ce dernier. Les éléments de contexte sont transitoires, mais ils possèdent toujours une valeur. Même si le contexte ne comporte pas un élément de contexte donné, celui-ci contient une valeur par défaut et ne retourne jamais la valeur null.

Contrairement à un service, la valeur d'un élément de contexte peut changer à tout moment ; vous ne devez dès lors jamais mettre en cache un élément de contexte. Vous pouvez vous abonner à un rappel de modification, déclenché en cas de modification d'un type particulier d'élément de contexte.

Les éléments de contexte sont immuables, mais de nouveaux éléments de contexte peuvent remplacer les éléments existants pour simuler la mutabilité.

Abonnements

Les services et les éléments de contexte comportent des gestionnaires. Les gestionnaires de services et les gestionnaires d'éléments de contexte sont essentiellement des tables, qui contiennent des données. Par exemple, le gestionnaire de services permet de publier de nouveaux services.

Les gestionnaires de services et les gestionnaires d'éléments de contexte fournissent également un mécanisme d'abonnement, qui signale au code la présence de données particulières. Cette notification est implémentée en tant que délégué de rappel. Un abonnement est un délégué appelé lors de l'ajout d'un type de service ou d'élément de contexte donné.

Ressemblances avec l'infrastructure concepteur ComponentModel

Le contexte d'édition est conceptuellement semblable aux interfaces IDesignerHost et IServiceContainer dans l'espace de noms System.ComponentModel.Design. Pour plus d'informations, consultez Comparaison entre l'infrastructure du Concepteur Windows Forms et l'infrastructure du Concepteur WPF.

Voir aussi

Référence

Microsoft.Windows.Design.Services

EditingContext

ContextItem

Autres ressources

Extensibilité du Concepteur WPF