Änderungen der Erweiterbarkeit in Visual Studio 2010

WPF Designer für Visual Studio stellt eine ausgereifte Plattform zum Implementieren von benutzerdefinierten Entwurfsvorgängen für WPF- und Silverlight-Steuerelemente zur Verfügung. Die WPF-Designer-Erweiterbarkeit-API wurde seit der ersten Version in Visual Studio 2008 umfassend weiterentwickelt. In den folgenden Abschnitten werden die Änderungen in WPF-Designer-Erweiterbarkeit für Visual Studio 2010 beschrieben.

Unterstützung von Silverlight und Versionen für mehrere Plattformen

In Visual Studio 2008 konnte nur für Steuerelemententwurfszeiten nur die aktuellste WPF-Plattformversion als Ziel verwendet werden. In Visual Studio 2010 wird diese Unterstützung auf mehrere Plattformen erweitert, einschließlich Entwurfszeitunterstützung für WPF 3.5, WPF 4, Silverlight 3 und zukünftige Plattformversionen. Da die gleiche Erweiterbarkeits-API für alle genannten Plattformen vorhanden ist, können Entwickler von Steuerelemententwurfszeiten einfach eine Version erstellen und in mehreren Serversteuerelementlaufzeiten für verschiedene Plattformen verwenden.

Unterstützung in Expression Blend

Expression Blend kann jetzt als Implementierungsziel für Steuerelemententwurfszeiten verwendet werden. Verwenden Sie dazu die gleiche Erweiterbarkeitsschnittstelle, die auch in Visual Studio verfügbar ist. Sie können separate oder einheitliche Entwurfszeiterfahrungen für die beiden Erstellungsumgebungen verteilen.

Registrieren von Metadaten

Der bedeutendste Unterschied in der Erweiterbarkeits-API besteht darin, dass die IRegisterMetadata-Schnittstelle durch die IProvideAttributeTable-Schnittstelle ersetzt wurde. Durch diese Änderung wurden in Verbindung mit der Unterstützung mehrerer Plattformen grundlegende Änderungen in der Erweiterbarkeits-API erreicht. Bestehende Steuerelemententwurfszeit-Implementierungen für Visual Studio 2008 können aus diesem Grund nicht in Visual Studio 2010 geladen werden.

Außerdem verwenden Sie in Visual Studio 2010 das ProvideMetadataAttribute-Attribut, um anzuzeigen, dass eine Entwurfszeitassembly Metadaten für den Designer bereitstellt.

Erweiterungspunkte

Die neue Erweiterbarkeits-API unterstützt auch neue Entwurfszeiterfahrungen, darunter die folgenden:

  • Im Eigenschaftenfenster wird der Zugriff auf das Modell von den Kategorie-Editoren unterstützt. Diese Änderung wird an die Ausweitung von allgemeinen Eigenschaften in den oberen Bereich der Kategorieauflistung gekoppelt, damit Steuerelemententwickler umfassende Bearbeitungsmöglichkeiten im Eigenschaftenfenster anbieten können.

  • Neue AdornerPanel Hilfsmethoden, die eine einfachere Adornerplatzierung relativ zum benutzerdefinierten Steuerelement ermöglichen.

  • Neues Programmiermodell zum Freigeben der Entwurfszeitimplementierungen unter verschiedenen Entwurfstools, z. B. Visual Studio und Expression Blend.

  • Neues Programmiermodell zum Freigeben der Entwurfszeitimplementierungen unter mehreren Zielframeworks.

Vergleich der Erweiterbarkeit in Visual Studio 2008 und Visual Studio 2010

In der folgenden Tabelle sind die Unterschiede zwischen dem Erstellen von benutzerdefinierten Entwurfszeiterfahrungen in Visual Studio 2008 und Visual Studio 2010 zusammengefasst.

Visual Studio 2008

Visual Studio 2010

Um Entwurfszeittypen zu registrieren, implementieren Sie die IRegisterMetadata-Schnittstelle und verwenden die MetadataStore-Klasse.

Um Entwurfszeittypen zu registrieren, implementieren Sie die IProvideAttributeTable-Schnittstelle und rufen die CreateTable-Methode auf.

Sie müssen keine Attribute auf Assemblyebene hinzufügen.

Sie müssen Entwurfszeitassemblys mit dem ProvideMetadataAttribute-Attribut markieren.

Um einem grafischen Element einen Designertyp zuzuordnen, verwenden Sie die GetImage-Methode für NewItemFactory, die verschiedene Elementtypen zurückgeben kann.

Um einem Symbol einen Designertyp zuzuordnen, verwenden Sie die GetImageStream-Methode, um eine Bitmap zurückzugeben. Nur Bitmaps werden unterstützt.

Um auf Modelleigenschaften zuzugreifen, verwenden Sie die Abhängigkeitseigenschaft. Beispiel:

ModelProperty backgroundProperty = adornedControlModel.Properties[Control.BackgroundProperty];

Um auf Modelleigenschaften zuzugreifen, verwenden Sie den Namen der Abhängigkeitseigenschaft. Beispiel:

ModelProperty backgroundProperty = adornedControlModel.Properties["Background"];

Außerdem können Sie einen PropertyIdentifier definieren. Dies ist eine Kombination aus Typ und Zeichenfolge. PropertyIdentifier wird mit angefügten Eigenschaften verwendet, wenn eine einfache Namenssuche nicht ausreicht.

Um zwischen Layoutbereich und Renderbereich zu unterscheiden, verwenden Sie die AdornerCoordinateSpaces-Klasse.

Die AdornerCoordinateSpaces-Klasse kann nicht verwendet werden.

Um die Adornerposition relativ zum Inhalt anzugeben, verwenden Sie die AdornerPlacementCollection-Klasse.

Um die Adornerposition relativ zum Inhalt anzugeben, verwenden Sie die Methoden SetAdornerHorizontalAlignment, SetAdornerVerticalAlignment und SetAdornerMargin. Die AdornerPlacementCollection-Klasse wird aus Gründen der Abwärtskompatibilität beibehalten.

Siehe auch

Weitere Ressourcen

WPF-Designer-Erweiterbarkeit