Freigeben über


Bearbeiten der Kontextarchitektur

In diesem Thema wird erläutert, welche Rolle der Bearbeitungskontext bei der Entwicklung von Featureanbietern und Featureverbindungen für den WPF Designer für Visual Studio spielt. Weitere Informationen über Featureanbieter und Featureverbindungen finden Sie unter Featureanbieter und Featureverbindungen.

Der Bearbeitungskontext: Aufzeichnen des aktuellen Zustands des Designers

Ein wesentlicher Teil der Zustandsinformationen wird in einem visuellen Designer akkumuliert, während er verwendet wird. Der Zustand kann beliebige Entwurfszeitinformationen darstellen, beispielsweise Objekte in der aktuellen Auswahl oder das Verhalten, wenn die Maustaste gedrückt wird. Der Zustand muss an einem zentralen Speicherort gespeichert werden, damit er bei Bedarf abgerufen werden kann. Die EditingContext-Klasse stellt das zentrale Zustandsrepository für den Designer dar.

Dienste

Ein Dienst ist eine einzelne Instanz einer Klasse, die ein gut beschriebenes Verhalten definiert. Ein Dienst stellt das Verhalten und die Implementierung im Designer bereit. Sobald ein Dienst in einem Kontext erstellt wird, ist er immer vorhanden, bis der Kontext freigegeben wird. Dienste werden nie aus dem Kontext entfernt. Dienste verfügen über konsistente Instanzwerte. Aus diesem Grund können sie immer gefahrlos zwischengespeichert werden. Ein Codebeispiel zur Implementierung eines Dienstes finden Sie unter Gewusst wie: Erstellen einer benutzerdefinierten Featureverbindung.

Kontextelemente

Ein Kontextelement ist ein unveränderliches Objekt und enthält Zustandsdaten. Einige Kontextelemente definieren auch Methoden, die Operationen für den Zustand ausführen können, den sie enthalten.

Ein Kontextelement kann einem Kontext hinzugefügt und aus dem Kontext entfernt werden. Kontextelemente sind flüchtig, sie verfügen jedoch immer über einen Wert. Auch wenn ein bestimmtes Kontextelement sich nicht im Kontext befindet, besitzt es einen Standardwert und gibt nie null zurück.

Im Gegensatz zu einem Dienst kann sich der Wert eines Kontextelements jederzeit ändern. Aus diesem Grund sollten Sie ein Kontextelement nie zwischenspeichern. Sie können einen Rückruf der Änderung abonnieren, der ausgelöst wird, sobald ein bestimmter Typ von Kontextelement geändert wird.

Kontextelemente sind unveränderlich, neue Kontextelemente können jedoch vorhandene Kontextelemente ersetzen und so Veränderlichkeit simulieren.

Abonnements

Dienste und Kontextelemente besitzen Manager. Dienst-Manager und Kontextelement-Manager sind im Grunde Tabellen, die Daten enthalten. Den Dienst-Manager können Sie beispielsweise verwenden, um neue Dienste zu veröffentlichen.

Dienst-Manager und Kontextelement-Manager stellen auch einen Abonnementmechanismus bereit, der den Code benachrichtigt, wenn ein bestimmtes Datenelement vorhanden ist. Diese Benachrichtigung wird als Rückrufdelegat implementiert. Bei einem Abonnement handelt es sich um einen Delegaten, der aufgerufen wird, wenn ein bestimmter Diensttyp oder Kontextelementtyp hinzugefügt wurde.

Ähnlichkeit zum ComponentModel-Designerframework

Das Konzept des Bearbeitungskontexts ist mit dem Konzept der IDesignerHost-Schnittstelle und der IServiceContainer-Schnittstelle im System.ComponentModel.Design-Namespace vergleichbar. Weitere Informationen finden Sie unter Vergleich der Frameworks des Windows Forms-Designers und des WPF-Designers.

Siehe auch

Referenz

Microsoft.Windows.Design.Services

EditingContext

ContextItem

Weitere Ressourcen

WPF-Designer-Erweiterbarkeit