Freigeben über


Verwenden des ModelItem-Bearbeitungskontexts

Der ModelItem Bearbeitungskontext ist das Objekt, das von der Hostanwendung für die Kommunikation mit dem Designer verwendet wird. EditingContext stellt zwei Methoden, Items und Services, bereit, die verwendet werden können.

Items-Auflistung

Die Items Sammlung wird verwendet, um auf Daten zuzugreifen, die zwischen dem Host und dem Designer gemeinsam genutzt werden, oder auf Daten, die für alle Designer verfügbar sind. Diese Sammlung verfügt über die folgenden Funktionen, auf die über die ContextItemManager Klasse zugegriffen wird:

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

Services-Auflistung

Die Services Sammlung wird verwendet, um auf Dienste zuzugreifen, die der Designer für die Interaktion mit dem Host oder diensten verwendet, die alle Designer verwenden. Diese Auflistung verfügt über die folgenden relevanten Methoden:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Zuweisen eines Designers zu einer Aktivität

Um anzugeben, welchen Designer eine Aktivität verwendet, wird das Designer-Attribut verwendet.

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

Erstellen eines Diensts

Um einen Dienst zu erstellen, der als Verbindung von Informationen zwischen dem Designer und dem Host dient, muss eine Schnittstelle und eine Implementierung erstellt werden. Die Schnittstelle wird von der Publish Methode verwendet, um die Elemente des Dienstes zu definieren. Die Implementierung enthält die Logik für den Dienst. Im folgenden Codebeispiel werden eine Dienstschnittstelle und -implementierung erstellt.

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  
            } ;  
        }  
    }  

Veröffentlichen eines Diensts

Damit ein Designer einen Dienst nutzt, muss er zuerst mithilfe der Publish Methode vom Host veröffentlicht werden.

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

Abonnieren eines Diensts

Der Designer erhält zugriff auf den Dienst mithilfe der Subscribe Methode in der OnModelItemChanged Methode. Der folgende Codeausschnitt veranschaulicht, wie Sie einen Dienst abonnieren.

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;
    }  
}  

Freigeben von Daten mithilfe der Items-Auflistung

Die Verwendung der Items-Auflistung ähnelt der Verwendung der Services-Auflistung, mit der Ausnahme, dass SetValue anstelle von Publish verwendet wird. Diese Auflistung eignet sich eher für die Freigabe einfacher Daten zwischen den Designern und dem Host anstatt für die Freigabe komplexer Funktionen.

EditingContext-Hostelemente und -Dienste

.NET Framework bietet eine Reihe integrierter Elemente und Dienste, auf die über den Bearbeitungskontext zugegriffen wird.

Elemente:

  • AssemblyContextControlItem: Verwaltet die Liste der referenzierten lokalen Assemblys, die im Workflow für Steuerelemente verwendet werden (z. B. den Ausdrucks-Editor).

  • ReadOnlyState: Gibt an, ob der Designer einen schreibgeschützten Zustand aufweist.

  • Selection: Definiert die Auflistung von Objekten, die derzeit ausgewählt sind.

  • WorkflowCommandExtensionItem:

  • WorkflowFileItem: Stellt Informationen zu der Datei bereit, auf der die aktuelle Bearbeitungssitzung basiert.

Dienste: