Freigeben über


Designer-Initialisierung und Metadatums-Konfiguration

Änderung der Metadaten und der Filter von Attributen, die mit einem Designer oder einer Designerkomponente zugeordnet sind, stellt einen Mechanismus bereit, damit Anwendungen definieren, welche Tools von einem bestimmten Designer verwendet werden, um unterschiedliche Type-Objekte zu behandeln (z. B. Datenstrukturen, Klassen oder eine grafische Entitäten), wenn der Designer verfügbar ist, und wie die Visual Studio-IDE konfiguriert wird, um den Designer zu unterstützen (z. B. der Toolbox Kategorie oder - Registerkarte verfügbar ist).

Visual Studio SDK bietet verschiedene Mechanismen, um das Steuerelement zu einer Initialisierung der Komponente des Designers oder Designer und die Bearbeitung der Metadaten von VSPackages zu erleichtern.

Initialisieren von Konfigurationsinformationen und Metadaten

Da sie bei Bedarf geladen werden, möglicherweise nicht von VSPackages geladen Visual Studio die Umgebung vor der Instanziierung eines Designers. Daher kann VSPackages Mechanismus für den Standardnamen für das Konfigurieren eines Designers oder einer Designerkomponente für Build nicht verwenden, die einDesignerCreated  Ereignis zu behandeln ist. Stattdessen implementiert ein VSPackage eine Instanz der DesignSurfaceExtension-Schnittstelle und registriert die Anpassungen bereitstellen, so genannte Entwurfsoberflächen Namespaceerweiterungen.

Anpassen der Initialisierung

Das Anpassen eines Designers, eine Komponente oder eine Designeroberfläche, besteht ein:

  1. Die Designermetadaten ändern und effizient, Ändern, wie eine bestimmte Type zugegriffen oder konvertiert wird.

    Dies ist von der UITypeEditor oder TypeConverter Mechanismen normalerweise durchgeführt.

    Wenn z. B. System.Windows.Forms- basierte Designer initialisiert werden, wird die Visual Studio Umgebung UITypeEditor für Image-Objekten, die dem Designer verwendet werden, um den Ressourcen-Manager die Bitmap abgerufen anstatt im Dateisystem.

  2. Integration mit der Umgebung, beispielsweise durch Abonnieren von Ereignissen oder Abrufen von Informationen zur Konfiguration des Projekts. Sie erhalten Informationen zur Projektkonfiguration und Ereignisse abonnieren, indem Sie die ITypeResolutionService-Schnittstelle abgerufen.

  3. Änderung der Benutzerumgebung von aktivierende entsprechende Toolbox Kategorien oder durch Beschränkung der Anwendbarkeit des Designers durch das Anwenden einer Instanz der ToolboxItemFilterAttribute-Klasse auf den Designer.

Designer-Initialisierung von VSPackages

Durch die Initialisierung mit einem VSPackage sollte Designer bearbeiten:

  1. Ein Objekt erstellen, das die DesignSurfaceExtension-Klasse implementiert.

    Hinweis

    Die DesignSurfaceExtension-Klasse sollte nie auf dasselbe Objekt wie die Package-Klasse implementiert werden.

  2. Registrieren Sie die Klasse, die DesignSurfaceExtension implementiert, z. B. Unterstützung für die VSPackages Designer Namespaceerweiterungen gewährend, indem Sie Instanzen von DesignSurfaceExtensionAttribute, ProvideObjectAttribute und ProvideServiceAttribute der Klasse anwenden, die die Implementierung von VSPackages Packagebereitstellt.

Bei jedem beliebigen Designer oder Designerkomponente erstellt wird, die Visual Studio Umgebung:

  1. Greift auf jeden registrierten Entwurfsoberflächen für Textanbieter.

  2. Instanziiert und initialisiert eine Instanz eines Anbieters für jedes Objekt DesignSurfaceExtension Entwurfsoberflächen

  3. Ruft OnDesignerCreated-Methode jedes Entwurfsoberflächen oder Anbieters für OnComponentCreated-Methode (bei Bedarf).

Wenn Sie das DesignSurfaceExtension-Objekt als Member eines VSPackage implementieren, ist es wichtig, zu verstehen:

  1. Die Visual Studio Umgebung stellt kein Steuerelement darüber, welche Metadaten oder andere Konfigurationseinstellungen eines bestimmten Anbieters DesignSurfaceExtension ändert. Es ist möglich für zwei oder mehr DesignSurfaceExtension Anbieter, die die gleiche Designer auf das Feature für widersprüchliche Arten ändern, wenn die letzte Änderung definitiv ist. Sie ist unbestimmt, die letzte Änderung übernommen wird.

  2. Es ist möglich, eine Implementierung des DesignSurfaceExtension-Objekts zu bestimmten Designern explizit eingeschränkt werden, indem Instanzen von ToolboxItemFilterAttribute dieser Implementierung wird. Weitere Informationen über das Toolboxelement Filtern finden Sie unter ToolboxItemFilterAttribute und ToolboxItemFilterType.

Zusätzliches Metadatums-bereitstellen

VSPackage können die Konfiguration eines Designers oder einer Designerkomponente zur Entwurfszeit nicht ändern.

Die ProvideDesignerMetadataAttribute-Klasse kann programmgesteuert verwendet werden oder in einem VSPackage angewendet wird, die einen Designer bereitstellt.

Eine Instanz der ProvideDesignerMetadataAttribute-Klasse wird verwendet, um die Metadaten von Komponenten zu ändern, die auf einer Entwurfsoberfläche erstellt werden. Beispielsweise könnte Erstellen eines standardmäßigen Eigenschaftenbrowser ersetzen, der von CommonDialog-Objekte, die durch einen benutzerdefinierten Eigenschaftenbrowser verwendet wurde.

Die Änderungen, die von einer Instanz von ProvideDesignerMetadataAttribute angewendeten bereitgestellt wurden, zu VSPackages eine Implementierung von Package können einen von zwei Bereichen verfügen:

  • Global -- für alle neuen Instanzen einer angegebenen Komponente

  • Lokale Variablen -- Betreffen nur die Instanz der Komponente, die auf einer Entwurfsoberfläche erstellt wurde, stellt der aktuellen VSPackages bereit.

Die IsGlobal-Eigenschaft der ProvideDesignerMetadataAttribute-Instanz, die mit einer Implementierung von VSPackages Package angewendet wird, bestimmt diesen Bereich.

Durch die Anwendung dieses Attributs auf eine Implementierung von Package mit der IsGlobal-Eigenschaft des ProvideDesignerMetadataAttribute-Objekts, das truefestgelegt wird, wie unten ändert den Browser für die gesamte Visual Studio Umgebung:

       [ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=true)]

       internal class MyPackage : Package {}

Wenn das globale Flag auf falsefestgelegt wurde, wird die Änderung lokal aktuellen Designer um Metadaten von der aktuellen VSPackage unterstützt wird:

       [ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=false)]

       internal class MyPackage : Package {}

Hinweis

In dieser Phase der Entwurfsoberfläche unterstützt nur das Erstellen von Komponenten und daher nur lokale Komponenten können Metadaten verfügen.Im Beispiel oben wurde versucht, die Eigenschaft, wie die Color-Eigenschaft eines Objekts zu ändern.Wenn für das globale Flag false übergeben wurde, wird CustomBrowser nie angezeigt werden, da der Designer tatsächlich nie eine Instanz von Colorerstellt.Das globale Flag auf false festzulegen ist für Komponenten, z. B. Steuerelemente, Zeitgeber und Dialogfelder nützlich.

Siehe auch

Referenz

DesignSurfaceExtension

DesignSurfaceExtensionAttribute

ToolboxItemFilterType

Weitere Ressourcen

Erweitern der Entwurfszeitunterstützung