Partager via


Utilisation du contexte d’édition ModelItem

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

La collection d'articles

La Items collection est utilisée pour accéder aux données partagées entre l’hôte et le concepteur, ou les données disponibles pour tous les concepteurs. Cette collection dispose des fonctionnalités suivantes, accessibles via la ContextItemManager classe :

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

La collection Services

La Services collection est utilisée pour accéder aux services utilisés par le concepteur pour interagir avec l’hôte ou les services utilisés par tous les concepteurs. Cette collection comporte les méthodes suivantes, dignes de mention :

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Affectation d’un concepteur à une activité

Pour spécifier le concepteur utilisé par une activité, l’attribut Concepteur est utilisé.

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

Création d’un service

Pour créer un service qui sert de canal d’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 Publish méthode pour définir les membres du service et l’implémentation contient la logique du service. Dans l’exemple de code suivant, une interface de service et une implémentation 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 consomme 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 via 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 à l’utilisation de la collection Services, sauf qu’elle SetValue est utilisée au lieu de Publish. Cette collection est plus appropriée pour partager des données simples entre les concepteurs et l’hôte, plutôt que des fonctionnalités complexes.

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

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

Éléments:

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

  • ReadOnlyState: indique si le concepteur est en mode lecture seule.

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

  • WorkflowCommandExtensionItem :

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

Services :

  • AttachedPropertiesService : permet d’ajouter des propriétés à l’instance actuelle en utilisant AddProperty.

  • DesignerView: autorise l’accès aux propriétés du canevas du concepteur.

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

  • ICommandService: permet d’intégrer des commandes de concepteur (telles que le menu contextuel) à des implémentations de service personnalisées.

  • 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 au concepteur des fonctionnalités d’aide intégrées.

  • IValidationErrorService: fournit l’accès aux erreurs de validation en utilisant 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: utilisé par le concepteur pour interagir avec le modèle du flux de travail 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: Associe les éléments visuels aux éléments sous-jacents du modèle.

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

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

  • WindowHelperService: permet d’inscrire et de désinscrire des délégués pour les notifications d’événements. Permet également à un propriétaire de fenêtre d’être défini.