Freigeben über


Exemplarische Vorgehensweise: Bereitstellen von benutzerdefinierten Entwurfszeitmetadaten

Der WPF Designer für Visual Studio ermöglicht es Ihnen, benutzerdefinierte Entwurfszeitmetadaten für andere Designer bereitzustellen. Sie können z. B. in Visual Studio und Expression Blend benutzerdefinierte Steuerelemente für andere Entwurfsumgebungen erstellen. Um die benutzerdefinierten Entwurfszeitmetadaten beim Designer zu registrieren, implementieren Sie die IProvideAttributeTable-Schnittstelle und rufen eine der AddCustomAttributes-Methoden auf.

In dieser exemplarischen Vorgehensweise wird erläutert, wie benutzerdefinierte Entwurfszeitimplementierungen für eine benutzerdefinierte WPF- oder Silverlight-Steuerelementbibliothek bereitgestellt werden. Im Verlauf dieser exemplarischen Vorgehensweise führen Sie folgende Aufgaben aus:

  • Erstellen eines benutzerdefinierten WPF-Steuerelementbibliothek-Projekts

  • Erstellen Sie eine separate Assembly für Entwurfszeitmetadaten.

Wenn Sie dies abgeschlossen haben, wissen Sie, wie benutzerdefinierte Entwurfszeitmetadaten für ein benutzerdefiniertes WPF- oder Silverlight-Steuerelement bereitgestellt werden.

Tipp

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

  • Visual Studio 2010.

Erstellen des benutzerdefinierten Steuerelements

Zuerst wird das Projekt für das benutzerdefinierte WPF-Steuerelement erstellt.

So erstellen Sie das benutzerdefinierte Steuerelement

  1. Erstellen Sie ein neues benutzerdefiniertes WPF-Steuerelementbibliothek-Projekt in Visual Basic oder Visual C# mit dem Namen TailspinToysControlLibrary.

    Der Code für CustomControl1 wird im Code-Editor geöffnet.

    Tipp

    Wenn die benutzerdefinierte Entwurfsumgebung nur auf Expression Blend 4 und Visual Studio 2010 festgelegt werden muss, legen Sie das Zielframework des Projekts auf .NET Framework 4 fest. Wenn die benutzerdefinierte Entwurfsumgebung auf Expression Blend 3, Expression Blend 4 und Visual Studio 2010 festgelegt werden muss, legen Sie das Zielframework des Projekts auf .NET Framework 3.5 fest.

  2. Ändern Sie im Projektmappen-Explorer den Namen der Codedatei in TailspinToysControl.cs oder TailspinToysControl.vb. Wenn eine Meldung mit der Frage angezeigt wird, ob Sie eine Umbenennung für alle Verweise in diesem Projekt vornehmen möchten, klicken Sie auf Ja.

  3. Öffnen Sie die Projekteigenschaften, und wählen Sie die Registerkarte Erstellen (Kompilieren in Visual Basic) aus.

  4. Legen Sie den Ausgabepfad des Projekts auf "bin\" fest.

  5. Erstellen Sie die Projektmappe.

Erstellen der Entwurfszeit-Metadatenassembly

Entwurfszeitcode wird in speziellen Metadatenassemblys bereitgestellt. Für diese exemplarische Vorgehensweise werden die benutzerdefinierten Metadaten von Visual Studio und Expression Blend unterstützt und in einer Assembly mit dem Namen TailspinToysControlLibrary.Design bereitgestellt. Weitere Informationen zum Benennen von Assemblys finden Sie unter Bereitstellen eines benutzerdefinierten Steuerelements und von Entwurfszeitassemblys.

So erstellen Sie die Entwurfszeit-Metadatenassembly

  1. Fügen Sie der Projektmappe ein neues Klassenbibliothek-Projekt in Visual Basic oder Visual C# mit dem Namen TailspinToysControlLibrary.Design hinzu.

  2. Legen Sie den Ausgabepfad des Projekts auf folgenden Pfad fest: ".. \TailspinToysControlLibrary\bin\". Dadurch wird die Assembly des Steuerelements im selben Ordner wie die Metadatenassembly gespeichert, wodurch Designern die Metadatensuche ermöglicht wird.

  3. Fügen Sie Verweise auf die folgenden WPF- und XAML-Assemblys hinzu.

    • PresentationCore

    • PresentationFramework

    • System.Xaml

    • WindowsBase

  4. Fügen Sie Verweise auf die folgenden WPF-Designer-Assemblys hinzu. 

    • Microsoft.Windows.Design.Extensibility

    • Microsoft.Windows.Design.Interaction

    Tipp

    Wenn Sie Expression Blend installiert haben, sehen Sie möglicherweise zwei Sätze von WPF-Designer-Assemblys im Dialogfeld Verweise hinzufügen. Wählen Sie die zwei Assemblys aus, die mit Visual Studio installiert sind. Sie befinden sich im Ordner $ (VSInstallDir) \Common7\IDE\PublicAssemblies.

    Tipp

    Wenn die WPF-Designer-Assemblys nicht im Dialogfeld Verweise hinzufügen angezeigt werden. Klicken Sie auf die Registerkarte Durchsuchen, und navigieren Sie zu den Assemblys im Ordner $ (VSInstallDir) \Common7\IDE\PublicAssemblies.

  5. Fügen Sie dem TailspinToysControlLibrary-Projekt einen Verweis hinzu.

  6. Ändern Sie im Projektmappen-Explorer den Namen der Class1-Codedatei in RegisterMetadata.cs oder RegisterMetadata.vb.

  7. Ersetzen Sie den automatisch generierten Code durch den folgenden Code. Durch diesen Code wird eine AttributeTable erstellt, mit der die benutzerdefinierten Entwurfszeitattribute an die TailspinToysControl-Klasse angefügt werden.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Microsoft.Windows.Design;
    using Microsoft.Windows.Design.Features;
    using Microsoft.Windows.Design.Metadata;
    
    using TailspinToysControlLibrary;
    
    // The ProvideMetadata assembly-level attribute indicates to designers
    // that this assembly contains a class that provides an attribute table. 
    [assembly: ProvideMetadata(typeof(TailspinToysControlLibrary.Design.RegisterMetadata))]
    namespace TailspinToysControlLibrary.Design
    {
        internal class RegisterMetadata : IProvideAttributeTable
        {
            // Called by the designer to register any design-time metadata. 
            public AttributeTable AttributeTable
            {
                get
                {
                    AttributeTableBuilder builder = new AttributeTableBuilder();
    
                    // Set ToolboxBrowsableAttribute to true to display your custom control 
                    // in the Toolbox and in the Choose Items... dialog box. 
                    builder.AddCustomAttributes(typeof(TailspinToysControl), new ToolboxBrowsableAttribute(true));
    
                    return builder.CreateTable();
                }
            }
        }
    }
    
  8. Erstellen Sie die Projektmappe.

Nächste Schritte

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Toolboxsymbols für ein Steuerelement

Referenz

AttributeTable

Registerkarte "WPF-Komponenten", Dialogfeld "Toolboxelemente auswählen"

Weitere Ressourcen

Exemplarische Vorgehensweise: Bereitstellen von Metadaten für Toolboxsymbole

Toolboxsymbole

Bereitstellen eines benutzerdefinierten Steuerelements und von Entwurfszeitassemblys

Bereitstellen von Entwurfszeitmetadaten