Partage via


Utilisation du contexte d'édition ModelItem

Le contexte d'édition ModelItem est l'objet que l'application hôte utilise pour communiquer avec le concepteur. EditingContext expose deux méthodes, Items et Services, qui peuvent être utilisées

La collection Items

La collection Items permet d'accéder aux données partagées entre l'hôte et le concepteur ou aux données disponibles pour tous les concepteurs. Cette collection fournit les fonctionnalités suivantes, accessibles via la classe ContextItemManager :

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

La collection Services

La collection Services permet d’accéder aux services que le concepteur utilise pour interagir avec l’hôte ou aux services que les concepteurs utilisent. Cette collection présente les méthodes de références suivantes :

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Assignation d'une activité à un concepteur

L'attribut Designer permet de spécifier le concepteur utilisé par une activité.

[Designer(typeof(MyClassDesigner))]  
public sealed class MyClass : CodeActivity  
{
}

Création d'un service

Pour créer un service servant de canal de transmission des informations entre le concepteur et l'hôte, une interface et une implémentation doivent être créées. L'interface est utilisée par la méthode Publish pour définir les membres du service et l'implémentation contient la logique du service. Dans l'exemple de code suivant, une interface et une implémentation de service sont créées.

public interface IMyService  
    {  
        IEnumerable<string> GetValues(string DisplayName);  
    }  
  
    public class MyServiceImpl : IMyService  
    {  
        public IEnumerable<string> GetValues(string DisplayName)  
        {  
            return new string[]  {
                DisplayName + " One",
                DisplayName + " Two",  
                "Three " + DisplayName  
            } ;  
        }  
    }  

Publication d'un service

Pour qu'un concepteur puisse consommer un service, il doit d'abord être publié par l'hôte à l'aide de la méthode Publish.

this.Context.Services.Publish<IMyService>(new MyServiceImpl);  

Abonnement à un service

Le concepteur obtient l'accès au service à l'aide de la méthode Subscribe dans la méthode OnModelItemChanged. L'extrait de code suivant montre comment s'abonner à un service.

protected override void OnModelItemChanged(object newItem)  
{  
    if (!subscribed)  
    {  
        this.Context.Services.Subscribe<IMyService>(  
            servInstance =>  
            {  
                listBox1.ItemsSource = servInstance.GetValues(this.ModelItem.Properties["DisplayName"].ComputedValue.ToString());  
            }  
            );  
        subscribed = true;
    }  
}  

Partage de données à l’aide de la collection Items

L'utilisation de la collection Items est similaire à celle de la collection Services, à ceci près que SetValue est utilisé à la place de Publish. Cette collection est plus appropriée pour le partage de données simples entre les concepteurs et l’hôte qu’une fonctionnalité complexe.

Éléments et services de l'hôte EditingContext

Le .NET Framework fournit plusieurs éléments et services intégrés accessibles via le contexte d’édition.

Éléments :

  • AssemblyContextControlItem : gère la liste d'assemblys locaux référencés qui seront utilisés dans le workflow pour les contrôles (tels que l'éditeur d'expression).

  • ReadOnlyState : indique si le concepteur affiche un état de lecture seule.

  • Selection : définit la collection d'objets actuellement sélectionnés.

  • WorkflowCommandExtensionItem:

  • WorkflowFileItem : fournit des informations sur le fichier sur lequel la session d'édition active repose.

Services :

  • AttachedPropertiesService : permet d'ajouter les propriétés à l'instance actuelle, à l'aide de AddProperty.

  • DesignerView : permet d'accéder aux propriétés de la zone de conception.

  • IActivityToolboxService : permet de mettre à jour le contenu de la boîte à outils.

  • ICommandService : permet d'intégrer les commandes du concepteur (telles que le menu contextuel) avec les implémentations de service fournies sur demande.

  • IDesignerDebugView : fournit les fonctionnalités du débogueur du concepteur.

  • IExpressionEditorService : fournit l'accès à la boîte de dialogue Éditeur d'expressions.

  • IIntegratedHelpService : fournit le concepteur avec une fonctionnalité d'aide.

  • IValidationErrorService : fournit l'accès aux erreurs de validation à l'aide de ShowValidationErrors.

  • IWorkflowDesignerStorageService : fournit un service interne pour stocker et récupérer des données. Ce service est utilisé en interne par le .NET Framework et n’est pas destiné à une utilisation externe.

  • IXamlLoadErrorService : fournit l'accès à la collection d'erreurs de chargement XAML à l'aide de ShowXamlLoadErrors.

  • ModelService : permet au concepteur d'interagir avec le modèle du workflow en cours de modification.

  • ModelTreeManager : fournit l'accès à la racine de l'arborescence d'éléments de modèle à l'aide de Root.

  • UndoEngine : fournit des fonctionnalités d'annulation et de rétablissement.

  • ViewService : mappe les éléments visuels à des éléments de modèles sous-jacents.

  • ViewStateService : stocke des états d'affichage pour les éléments de modèles.

  • VirtualizedContainerService : utilisé pour personnaliser le comportement de l'interface utilisateur du conteneur virtuel.

  • WindowHelperService : permet d'enregistrer et d'annuler l'enregistrement des délégués pour les notifications d'événements. Permet également de définir un propriétaire de la fenêtre.